首页 > 解决方案 > async/await 函数中的 Javascript async/await 函数

问题描述

const function1 = () => {
   let isSuccess = false

   function2(
       // This a synchronous function it always return true or false. If result is true, ı want to change value of isSuccess as true
   )
 return isSuccess
}

funtions2 是一个同步函数,它总是返回 true 或 false。如果结果为真,我想将 isSuccess 的值更改为真。但是 isSuccess 总是返回 false。因为function2需要一点时间。我想等待返回 isSuccess 直到函数 2 的结果。我在stackoverflow上搜索有一些例子,但我不明白请帮助我

标签: javascriptreactjs

解决方案


在这里,我假设function2是异步的并执行某种异步工作。我正在使用该delay函数在下面的代码中模拟异步工作。

在您的代码中,您不要调用 function2; 函数调用中()缺少 。

此外,呼叫未await编辑。由于function2是异步的,它会开始运行,但会继续执行,因为await需要告诉 JS 你要等到函数返回的 promise 解决后再继续。

如果这仍然不清楚,我建议您阅读有关async/await的 MDN 文档

以下是一个工作示例:

const function2 = async () => {
  try {
    // .. do some async stuff, such as:
    const delay = ms => new Promise(res => setTimeout(res, ms))
    await delay(3000)
    
    return true;
  }
  catch {
    return false;
  }
}

const function1 = async () => {
  let isSuccess = false;
  isSuccess = await function2();
  
  return isSuccess;
}


// Test it out:
async function main(){
  console.log("calling function1...");
  console.log("function1 returned: " + await function1());
};
main();


推荐阅读