Promise.all执行多个ajax请求,没有得到响应
发布于 8 年前 作者 iguoji 5648 次浏览 来自 问答
// 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

回到顶部