CNode

bluebird中的Promise.all()方法的疑问

问答
Mmarsbaiyun发布于12 年前最后回复12 年前2 回复11972 浏览0 收藏

具体代码块儿大概如下所示:

request.getAsync(option)
.spread(function(res, content){
	//step 1
	var queue = [];
	queue.push(request.postAsync(option1));
	queue.push(request.postAsync(option2));
	Promise.all(queue).then(function(){
	//step 2 : do sth with arguments
	
	});
}).spread(function(res, content){
	//step 3
}).error(function(e){//...})

现在问题是程序走到step1之后直接就跳到step3了,压根儿不进step2,这是怎么回事儿啊?

查看回复

回复 (2)

M
marsbaiyun#1·12 年前

明白了,当all(queue)中的任务执行完成之后才会到step2,我应该把then换成spread

R
ryanking8215#2·12 年前

应该不是这个原因吧,1楼代码是step1做完后,step3和step2是并发执行的,你需要return Promise.all(queue)

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