Я играю с обещаниями в Node.js и пытаюсь использовать Promise.all. Я нажимаю три функции, которые возвращают обещание в массив, а затем вызывая Promise.all, но решение all никогда не попадает. В отладчике также говорится, что Promise.all «не определено».Promise.all in Node is undeined
Почему Promise.all никогда не возвращается и почему он отображается как «неопределенный»?
Соответствующая часть кода:
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 является «неопределенным» '- вы не можете« возвращать »из функции, которая не существует, - вы уверены, что у вас нет« перегруженных »обещаний с некоторой нарушенной реализацией Promise –
Что это за функция '' resolve' ', которую вы вызываете? – Bergi
Все, что у меня есть, требуется («обещание»). Я поставил точку останова в самом начале точки ввода моего приложения и вижу, что Promise.all уже не определен, поэтому не похоже, что он был «перегружен» позже. Завершение кода также не автозаполняет Promise.all. Для записи .. node -v is v4.4.7 – YuriW