如何在带有承诺的javascript异步函数之后调用函数?
所以我有一个函数,在这里我链接承诺获取不同的数据,就像这样如何在带有承诺的javascript异步函数之后调用函数?,javascript,asynchronous,promise,bluebird,ecmascript-5,Javascript,Asynchronous,Promise,Bluebird,Ecmascript 5,所以我有一个函数,在这里我链接承诺获取不同的数据,就像这样 that = this; that.load = function load() { getEmployeeDetails(id) .then(function() { return validateEmployeeDetails([name, age, address]); }) .spread(function (nameData, ageData, addressData) {
that = this;
that.load = function load() {
getEmployeeDetails(id)
.then(function() {
return validateEmployeeDetails([name, age, address]);
})
.spread(function (nameData, ageData, addressData) {
that.name = "Name: " + nameData;
that.age = "Age: " + ageData;
that.address = "Address: " + addressData;
})
.then(function() {
return someService.getDesignation(id);
})
.then(function(desig) {
that.designation = desig;
})
.catch(function(err) {
throw error;
})
.done();
};
我还有一个函数,我必须调用load函数
that.openEmployee = function openEmployee() {
getEmployeeSession()
.then(function getSessionData(res) {
if(res.status === 200) {
doSomething();
}
})
.catch(function() {
throw error;
})
.done();
};
现在我必须在doSomething函数之前调用load函数。我试着用承诺和事件。但问题是,它执行加载的扩展部分,然后调用doSomething,然后继续执行加载函数中的then块。然而,我想在执行load函数中的最后一个then之后调用doSomething方法。
提前感谢。删除毫无意义的
.catch(function(){throw error;})
!您使用的promise库中还有一个.done()
方法?您所说的是什么doSomething
函数,您的意思是openEmployee
?在哪里调用load
?您的load
方法需要返回承诺(而不是调用.done()
),以便load()的调用方可以链接到它@vmrvictor否,不传递回调。代码的其他部分取决于加载
函数返回未定义
?即使如此,然后编写第二个函数loadPromise
,它可以直接调用doSomething
,而load
将变成function(){loadPromise().done();}
。删除无意义的.catch(function(){throw error;})
!您使用的promise库中还有一个.done()
方法?您所说的是什么doSomething
函数,您的意思是openEmployee
?在哪里调用load
?您的load
方法需要返回承诺(而不是调用.done()
),以便load()的调用方可以链接到它@vmrvictor否,不传递回调。代码的其他部分取决于加载
函数返回未定义
?即使如此,然后编写第二个函数loadPromise
,它可以直接调用doSomething
,而load
将变成function(){loadPromise().done();}
。