强制函数等待另一个函数的最佳方法

时间:2018-02-23 14:05:11

标签: javascript node.js asynchronous

在我的代码中,我在另一个函数中使用了一个函数,其中内部函数返回一个值。像那样:

java.lang.IllegalStateException: No multipart config for servlet

但我的问题是第二个函数不等待第一个函数,因此,我得到一个未定义的返回。

如何强制某个函数等待另一个函数来获取同步函数?

1 个答案:

答案 0 :(得分:4)

我使用了这个承诺,从第一个承诺...

如:

function first(){
  /*do stuff*/
  return Promise.resolve(stuff);
}

first().then((stuff) => {
    second(stuff);
});

一个稍微更具体的例子,让我们做一些异步。东西:

function first(){
    return new Promise((resolve) => {
        setTimeout(resolve, 100, 'stuff');
    });
}

function second(stuff){
    console.log('second: ', stuff);
}

first().then((stuff) => {
    second(stuff);
});

在较新版本的Node.js中,你也可以这样做:

var testIt = async function()
{
    var result = await first();
    second(result);
}

testIt();

这是一个小语法糖,使代码更容易理解。