我在Node.js中使用Promise并试图使用Promise.all。我推送了三个函数,它们将一个承诺返回给一个数组,然后调用Promise.all,但所有的决心都不会被触发。在调试器上,它也表示Promise.all是“未定义的”。Promise.all在节点中是未定义的
为什么Promise.all从不返回,为什么它显示为“undefined”?
规范的相关部分:
var updates = [];
updates.push(data.updateItemCondition(characterID, specificItemID_toUse, newCondition));
updates.push(data.updateCharacterLoot(characterID, newValue));
updates.push(data.updateSharedLoot(lootUpdateChange));
Promise.all(updates).then(function (success) {
resolve("Item successfully used");
}, function (error) {
resolve("Failed to use item " + error.toString());
});
所有三个功能看起来像下面和使用调试器,我可以看到,所有这三个的决策,打击(以及io.writeFile所有三个相应的文件更新在磁盘上)
data.updateSharedLoot= function (lootUpdateChange) {
return new Promise(function (resolve, reject) {
//some logic
io.writeFile(...,function(callbackSuccess){
resolve(callbackSuccess);
});
});
}
'为什么Promise.all永远不会返回,因为'Promise.all是“undefined” - 你不能从一个不存在的函数“返回” - 你确定你没有“重载”Promise与一些破坏的Promise实现 –
你打的这个“resolve”函数是什么? – Bergi
我所有的都是要求('承诺')。我在应用程序入口点的最开始处放置了一个断点,可以看到Promise.all已经是未定义的,所以它看起来并不像之后“过载”。代码完成也不会自动完成Promise.all。为了记录..节点-v是v4.4.7 – YuriW