如何在javascript中对异步方法进行同步调用

时间:2018-04-04 12:40:09

标签: javascript ecmascript-6 async-await

我有一个异步方法,例如async methodA(), 我希望methodB()不要异步,而是要调用methodA()。 如何让methodA()完成并将数据发送到methodB()

2 个答案:

答案 0 :(得分:0)

您可以使用async/await。 让我们采用异步的方法A.使用async关键字使您的方法成为异步。

async function A(){
//do something
}

现在函数A总是返回promise如果它没有返回JavaScript将它包装成已解析的promise

让你的方法B等到该承诺结算并返回结果

let value = await promise;

现在这仅适用于async函数。您可以在方法B中使用value。 使用此方法,您可以在方法B中使用方法A的输出。您还可以将输出分配给全局变量并在以后使用

async function A() {
          let promise = new Promise((resolve, reject) => {
            setTimeout(() => resolve("output for method B"), 1000)
          });
          let result = await promise; // wait till the promise resolves (*)
          function B(){
            // do something with result
            console.log(result)
          }
          B(result)
        }
        A();

答案 1 :(得分:0)

嗯,如果没有超时,这是不可能的,我不想要其中一个,所以我让整个事情变得异步......