我的nodejs代码中有一个promise链,我不明白为什么第二个'then'部分在第一个'then'部分完成执行之前被执行。有人可以帮我理解下面的代码有什么问题吗?
.then(model=>{
return mongooseModel.find({})
.then(result=>{
return _.each(model.dataObj,data=>{
return _.each(data.fields,field=>{
if(_findIndex(result, {'field.type':'xxx'})>0)
{
return service.getResp(field.req) //this is a service that calls a $http.post
.then((resp)=>{
field.resp=resp;
return field;
})
}
})
})
})
.then(finalResult=>{
submit(finalResult); //this is being called before the then above is completely done
})
})
function submit(finalResult){
.....
}
我通过进行如下更改解决了我的问题
.then(model=>{
return Promise.each(model.dataObj,data=>{
return getRequest(data.fields)
.then(()=>{
return service.getResp(field.req) //this is a service that calls a $http.post
.then((resp)=>{
field.resp=resp;
return field;
})
})
})
.then(finalResult=>{
submit(finalResult);
})
})
function getRequest(fields){
return mongooseModel.find({})
.then(result=>{
if(_findIndex(result, {'field.type':'xxx'})>0)
{
}
})
}