gpt4 book ai didi

JavaScript Promises - 在继续之前等待解决

转载 作者:行者123 更新时间:2023-12-03 03:20:44 24 4
gpt4 key购买 nike

我需要执行以下操作:

  1. 通过调用内部函数 (getLines()) 获取“行”列表。
  2. 选择第一行,执行操作
  3. 上一个操作完成后,选择下一行并执行相同的操作
  4. 对所有行重复此操作(3-20 行,具体取决于用户)

我有以下代码:

App.Lines = response.data;    
for (var _i = 0; _i < App.Lines.length; _i++) {
var makeCallPromise = new Promise(
function(resolve, reject) {
Session.connection.ol.makeCall(App.Lines[_i], callBackFunction(response) {
//this can take up to 30 seconds to respond...
resolve(response.data);
}, errorCallBackFunction(message) {
reject(message.error);
}, bareJid);
}
)
makeCallPromise.then(function(fulfilled) {
console.log("PROMISE WORKED!!!!!", fulfilled);
})
.catch(function(error) {
console.log("PROMISE FAILED!!!!!", error);
});
}

我希望循环在继续循环之前等待解决 promise ,但是,情况并非如此。我的问题是是否可以停止循环直到解决完成。注意 - 我正在使用 bluebird JS 库来实现 promise 。谢谢!

亲切的问候,

加里

最佳答案

我不了解 bluebird,但你可以做类似的事情来创建某种 for 循环,等待每个 promise 在下一次迭代之前结束。

这是一个通用示例,它当然可以优化,这只是一个快速尝试:

var i = 0;
var performAsyncOperation = function(operationNumber) {
return new Promise(function(resolve, reject){
console.log('Operation number', operationNumber);
resolve();
});
}

var chainAsyncOperations = function() {
if(++i < 10) {
return performAsyncOperation(i).then(chainAsyncOperations);
}
};
performAsyncOperation(i).then(chainAsyncOperations);

希望这对您有帮助;)

关于JavaScript Promises - 在继续之前等待解决,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46580981/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com