Promise.all执行多个ajax请求,没有得到响应
// urls 是一个拥有多个超链接的数组
let promises = Promise.all(urls.map((url) => {
return new Promise(function(resolve, reject){
// app.ajax 是我自定义的ajax函数,其回调函数在readyState==4&&status==200的时候调用
app.ajax(url, function(url){
// 下面这行每次运行都正确的输出来了
console.log(url);
// 但是下面这行好像并没有执行,如果将这行放到app.ajax外面就行
resolve(url);
}, undefined, true);
});
}));
// 下面这段根本没触发
promises.then(function(msg){
console.log("加载完成:", msg);
}, function(err){
console.log("加载失败:", err);
});
求解。
4 回复
ajax调用失败?但是你并没有执行reject(err)?
@jiangli373 虽然我没有执行reject,但是ajax肯定调用成功了,因为像我注释所说的,每次都能在回调函数中正确打印出信息
这种问题,代码调试可以解决,没看到什么明显的问题
@DevinXian 解决了,问题出自于我的回调函数设置成status==200才进入,有一部分失败的请求没有调用回调函数,导致Promise.all一直在等待那一部分resolve