我有一个包装在函数中的承诺。我将使用不同的输入参数多次调用此函数。每次Promise解析时,我都会将解析的值推送到存储阵列中。
当所有我的诺言都解决后,我将在其他功能中使用该存储阵列。
是否有任何不使用“ global-ish”变量进行设置的干净方法?
下面的代码是我可以想到的唯一方法:
// Set global-ish variables that can be referenced from multiple functions
var storageArray = [];
var numberOfPromiseCalls = 10;
var promiseCallsCount = 0;
// Setup promise wrapper
function promiseWrapper(inputParams){
return new Promise(function(resolve, reject) {
// awesome stuff at work here using inputParams
resolve(desiredOutput);
}
})
// call promise 10 times
for(i=0;i<numberOfPromiseCalls;i++){
// actual promise call
promiseWrapper(inputParams[i]).then(function (desiredOutput) {
// push resolve to storage array
storageArray.push(desiredOutput);
// test if this resolve is the "last" resolve of all the promises we called
promiseCallsCount++;
if(promiseCallsCount == numberOfPromiseCalls){
// ************************
// call a function that can work with the final storageArray
// ************************
}
})
}
我的意思是,上面的代码可以工作,但是老兄感觉很难看。一直存在很多歧义,并且必须跟踪可变层次结构。有更好的方法吗?
答案 0 :(得分:3)
我建议您使用docker run hello-world
并传递一系列诺言。兑现所有承诺后,调用null
将使您处理所有响应。
参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all
hello-world