CNode

Promise.all执行多个ajax请求,没有得到响应

问答
Iiguoji发布于9 年前最后回复9 年前4 回复6196 浏览0 收藏
// 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)

J
jiangli373#1·9 年前

ajax调用失败?但是你并没有执行reject(err)?

I
iguoji#2·9 年前
引用 jiangli373ajax调用失败?但是你并没有执行reject(err)?

@jiangli373 虽然我没有执行reject,但是ajax肯定调用成功了,因为像我注释所说的,每次都能在回调函数中正确打印出信息

D
DevinXian#3·9 年前

这种问题,代码调试可以解决,没看到什么明显的问题

I
iguoji#4·9 年前
引用 DevinXian这种问题,代码调试可以解决,没看到什么明显的问题

@DevinXian 解决了,问题出自于我的回调函数设置成status==200才进入,有一部分失败的请求没有调用回调函数,导致Promise.all一直在等待那一部分resolve

参与回复
登录后即可参与回复。登录