首页 > 解决方案 > 如何从异步函数执行成功或失败中获取返回状态“true”或“false”

问题描述

我有个问题

如何用这个例子的基本思想制作一个函数式代码?

就像异步代码执行的基于成功或失败事件的结果一样。

async function doSomeThing ( ...params ){
 //Some async thing to do with params
}

function callToAsync ( doSomething() ){
 //Some implementation for doSomething() success
 return true;
 //Some code implementation for doSomething() fail or error happens
 console.log(error);
 return false;
}

我正在学习一些关于异步 javascript 代码的知识。

感谢您的任何想法。

标签: javascriptnode.js

解决方案


这是我认为您想要的基本示例。

async function doSomeThing() {
  const randomNr = await Math.random(); //<- await for demonstration purposes
  if (randomNr < 0.2) {
    throw `${randomNr} should be >= 0.2`;
  } else {
    return randomNr;
  }
}

function callToAsync() {
  return doSomeThing() // <- return here is important
  .then(result => {
    console.log(`SUCCES: ${result}`);
    return true;
  })
  .catch(error => {
    console.error(`ERROR: ${error}`);
    return false;
  });
}

callToAsync()
.then(bool => {
  console.log(bool);
});

如代码所示,第一次返回callToAsync很重要。第一次返回确保向调用者返回一个承诺,一旦解决,它将保存布尔值。

callToAsync函数也可以写成:

async function callToAsync() {
  try {
    const result = await doSomeThing();
    console.log(`SUCCES: ${result}`);
    return true;
  } catch (error) {
    console.error(`ERROR: ${error}`);
    return false;
  }
}

推荐阅读