bluejava/zousan

Bug when

Closed this issue · 1 comments

var a = new Zousan();
var b = new Zousan();
a.then(b.resolve, b.reject);
b.then(()=>console.log('hi'), ()=>console.log('bye'))

This doesn't work, it has something to do with call(_undefined, ...)

Hi Leonard,

This breaks because you have passed function references into a.then to be subsequently called without their proper contexts.

One way to fix it is to pass in the functions bound to their context:
a.then(b.resolve.bind(b), b.reject.bind(b));

Another is to use anonymous functions to do the same:
a.then(x => b.resolve(x), x => b.reject(x));

But of course, the best approach to accomplish this behavior is to chain them, which achieves the exact same thing:
b.resolve(a)

Thanks for taking the time to comment - and sorry for the delay in getting back to you!