Nit*_*tya 4 javascript node.js promise
我正在尝试使用for循环来读取JSON对象以格式化JSON数据,并通过将格式化的响应放入模型对象将其发送回客户端.
在for循环中,我基于几个条件处理两个承诺.有两个函数,每个函数都有一个promise返回.如何在所有promise都解决之后获取我的最终数据?提前致谢.
for (var i = 0, i<jsonData.length; i++){
if(someCOndition){
getSomeData().then(function(data){
//some operation using data
})
}
if(someOtherCOndition){
getSomeOtherData().then(function(data){
//some operation using data
})
}
}
Run Code Online (Sandbox Code Playgroud)
Promise.all([ promise1, promise2 ])(在MDN上的Promise.all())在标准JS Promises(ES2015 +)的情况下.它返回一个新的promise,一旦所有传递的promises得到解决,它就会得到解决.但要注意 - 当至少一个承诺被拒绝时,它会立即被拒绝(它不会等待任何其他承诺).
您可以执行以下操作;
var promises = [],
JSONData_1 = ["chunk_11","chunk_12","chunk_13"],
JSONData_2 = ["chunk_21","chunk_22","chunk_23"],
getJSONData = (b,i) => new Promise((resolve,reject) => setTimeout(_ => b ? resolve(JSONData_1[i])
: resolve(JSONData_2[i]),1000));
for (var i = 0; i < JSONData_1.length; i++){
if(Math.random() < 0.5) promises.push(getJSONData(true,i));
else promises.push(getJSONData(false,i));
}
Promise.all(promises)
.then(a => console.log(a));Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12188 次 |
| 最近记录: |