如何在带有承诺的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();}