如何编写异步/等待代码而不链接和嵌套一堆承诺?

时间:2018-10-16 02:33:16

标签: javascript node.js ecmascript-6

我为此苦苦挣扎了很多。

例如,我需要一个值才能进行其他工作。

要检索该值,我需要进行API调用。

在我正常的编程头脑中,我想这样做:

let x = api.getLocationOfUser('user154');

后跟其他代码,例如:

let y = geo.getTaxRulesByLocationId(x.location_id);

是通过嵌套实现此目标的唯一方法吗?

1 个答案:

答案 0 :(得分:1)

也许您遇到的问题是 CallbackHell

function myfunc() {
    otherFunctionThatReturnsPromise.then((a) => {
        otherFunction(a).then((b) => {
            // Do stuff
            console.log(b);
        });
    });
}

尝试以下代码:

async function myfunc() {

   let a = await otherFunctionThatReturnsPromise();

   // This line wont be executed until the upper line returns with a resolved Promise
   let b = await otherFunction(a);
}

请参考the MDN site