javascript - 如何从异步函数执行成功或失败中获取返回状态“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 代码的知识。
感谢您的任何想法。
解决方案
这是我认为您想要的基本示例。
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;
}
}