每当我为每个循环进行迭代进行休息调用时,迭代将在得到第一个响应之前完成.....你可以帮助我吗。
var list = [1,2,3];
$scope.fun1 = function(list) {
forEach(list,function(value,key)) {
console.log("Start");
restCall(url,function(response) { //each rest request will tack 30sec.
console.log(response); // response = 'end'
});
};
};
获得输出
启动
启动
开始
结束
结束
结束
需要的输出:
启动
结束
启动
结束
启动
端
答案 0 :(得分:1)
您的休息电话需要返回您可以观看的承诺。然后,您需要构建一个队列并同步注册它们。所以你有一个变量并链接你的单个调用。这可能看起来像这样
var list = [1,2,3];
var queue = new Promise(resolve => resolve());
$scope.fun1 = function(list) {
forEach(list, function(value,key)) {
console.log("Start");
queue = queue.then(() => {
return restCall(url,function(response) { //each rest request will tack 30sec.
console.log(response); // response = 'end'
});
});
};
};
如果您想要继续队列,即使一个请求失败,您还需要添加.catch()来捕获错误
答案 1 :(得分:0)
我不确定你想要实现什么,但为了获得所需的输出,我建议使用recurrsion。
select p.* from pages as p where p.id = 21605
join products as pro on pro.page_id = p.id