等待正常功能

sha*_*gar 2 javascript asynchronous node.js promise async-await

是否可以等待一个不是承诺的函数?也许是一个不会失败的功能。

例如:

async function doWork() {
    const newData = await cannotFail();
    console.log("done: "+ newData);
}

function cannotFail() {
  var data = //cannot fail code . . .
    return data;
}

doWork();
Run Code Online (Sandbox Code Playgroud)

我在想也许用另一种语法这个选项是有意义的。

Mar*_*vić 5

考虑这两个例子

async function getData(){
  return "some data";
}

async function doSomething() {
  const data = await getData();
  console.log(data);
}

doSomething()
Run Code Online (Sandbox Code Playgroud)

function getData(){
  return "some data";
}

async function doSomething(){
  const data = getData();
  console.log(data);
}

doSomething();
Run Code Online (Sandbox Code Playgroud)

结果是完全一样的。await仅当您想要等待一个函数(就像它是同步的)时才使用asnyc。正常功能已经是同步的。

是的,可以在普通函数上使用await

function getData(){
  return 'some data';
}

async function doSomething(){
  const data = await getData();
  console.log(data);
 }
 
 doSomething();
Run Code Online (Sandbox Code Playgroud)

没有理由这样做。

  • 我找到了一个有用的示例:我在 React 中编写了一个 ModalProvider,它收到一个“onConfirm”回调。我们想在调用 onConfirm() 后关闭模态框,但我们不知道 onConfirm 是否是异步的 => `await onConfirm();closeModal()` (2认同)