基本上,我想创建一个函数,它返回两个可以在ES6 Promise API中使用的函数。我认为它被称为“元组”。事情是这样的:创建函数返回两个函数的元组
//start code
var provider = function (a) {
return new Promise(function (resolve, reject) {
setTimeout(function() {
resolve(a * 5);
}, 2000);
});
};
function makeProviders(num){
return [
function onResolved(){
return provider(num);
},
function onRejected(){
console.error('Dahm daniel.');
}
]
}
provider(5).then.apply(null, makeProviders(3)).then(function(val){
console.log('val => ', val);
});
//end code
不过,我得到这个奇怪的错误:
provider(5).then.apply(null, makeProviders(3)).then(function(val){
^
TypeError: Cannot read property 'constructor' of null
at then (native)
at Object.<anonymous> (/Users/Olegzandr/WebstormProjects/oresoftware/siamese/test/test2.js:32:18)
at Module._compile (module.js:409:26)
at Object.Module._extensions..js (module.js:416:10)
at Module.load (module.js:343:32)
at Function.Module._load (module.js:300:12)
at Function.Module.runMain (module.js:441:10)
at startup (node.js:134:18)
at node.js:962:3
这是正确的方式(或唯一办法),从单一功能返回两个函数用于立即调用另一个功能?
发生了什么肯定是承诺中的promise对象(this)现在被绑定为null,而不是承诺对象实例本身。所以看起来这种方法不起作用。 –