gpt4 book ai didi

javascript - 相当于 Promise 的 async 函数

转载 作者:太空宇宙 更新时间:2023-11-04 03:01:53 24 4
gpt4 key购买 nike

我有一个返回 promise 的函数,如下所示:

let aFunction= function(){
return new Promise((resolve, reject){
someNodeApi(params, function(err, data)) {
if(err) {
return reject(err);
}
if(data meets certain criteria) {
someOtherNodeApi(params, function(err, data)) {
// handle conditions.
}
}
resolve(data);
}
})
}

我想要一个与此类函数等效的async函数。简而言之,我需要这样的东西:

let aFunction = async function(){
someNodeApi(params, function(err, data){
if(err) {
// reject condition
}
// resolve condition.
})
}

那么上面的rejectresolve条件应该是什么,以便我调用该函数的所有地方都像这样:

aFunction()
.then(data=>{})
.catch(err=>{})

它应该保持不变。

编辑

我必须澄清,我的问题不是关于如何调用异步函数。但它是关于如何将返回 Promise 的函数转换为能够使用异步等待模式的优点,而无需修改其调用方式。 (当您处理异步等待时代之前的 Node js 代码时,这是一个非常常见的场景)。

最佳答案

这就是我喜欢编写 async/await 的方式,使其非常简单。里面的所有代码都可以读作同步。编辑:仅当 API 返回已解决或拒绝的 Promise 对象时,await 才会起作用。 await 不解决 promise 。

function someAPI() {
return new Promise((resolve, reject)=>{
someNodeApi(params, function(err, data){
if(err) {
reject(error)
} else {
resolve(data)
}
// resolve condition.
})
});
}


async function aFunction() {
try {
const result = await someAPI();
return result;
} catch(err){
console.log(err);
}
}

aFunction()
.then((res) => console.log(res))

关于javascript - 相当于 Promise 的 async 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53447608/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com