【发布时间】:2018-03-30 18:55:11
【问题描述】:
我正在使用一个 node.js 模块,它有一个没有回调的方法。取而代之的是,当该方法完成时会触发一个事件。我想解决一个承诺,使用该事件作为回调来确保该方法已成功完成。
array.lenght on promise 可以是 X。所以,我需要“听到”X 次事件来确保我所有方法都已成功完成 这不是问题,我只是告诉你我知道这可能会发生
事件:
tf2.on('craftingComplete', function(recipe, itemsGained){
if(recipe == -1){
console.log('CRAFT FAILED')
}
else{
countOfCraft++;
console.log('Craft completed! Got a new Item #'+itemsGained);
}
})
承诺:
const craftWepsByClass = function(array, heroClass){
return new Promise(function (resolve, reject){
if(array.length < 2){
console.log('Done crafting weps of '+heroClass);
return resolve();
}
else{
for (var i = 0; i < array.length; i+=2) {
tf2.craft([array[i].id, array[i+1].id]); // <--- this is the module method witouth callback
}
return resolve(); // <---- I want resolve this, when all tf2.craft() has been completed. I need 'hear' event many times as array.length
}
})
}
【问题讨论】:
-
tf2.craft()是否返回Promise?请注意,Promise只能被解析或拒绝一次。 -
@guest271314 不要。 tf2.craft() 什么都不返回;
-
that has a method without callbacks.on是一个回调.. :) -
@Keith 但是它与单个方法调用是分开的,这是一个主要问题
-
我知道我说英语很糟糕。我会尽力而为。当我调用 tf2.craft 时,我需要检查事件“craftingComplete”是否已触发多次。任何可能的 ID 或工艺是否失败都无关紧要。我需要知道 tf2.craft 是否已完成,以及为什么要检查“craftingComplete”事件
标签: javascript node.js events promise resolve