gpt4 book ai didi

javascript - 使用异步/等待不起作用

转载 作者:行者123 更新时间:2023-11-30 15:10:15 25 4
gpt4 key购买 nike

我有一个函数,它执行异步数据库搜索操作。

var get_all_channels = function {
return new Promise(()=> {
db.find({type:'pricing'},{channel_name:1},function(err,docs){
if(err)
return err;
var c = []
docs.forEachOf(function(ch){
c.push(ch['channel_name'])
})
return c;
})
})
}

async function send(){
return await get_all_channels()
}
function calculate(){
send().then(res => alert(res))
}

在这里,上面的功能不起作用。我不知道为什么?请帮我修复这个功能。

最佳答案

您需要在 get_all_channels 中用结果数组 c 解决 promise :

var get_all_channels = function {
return new Promise((resolve, reject)=> {
db.find({type:'pricing'},{channel_name:1},function(err,docs){
if(err) {
reject(err)
return
}

var c = []
docs.forEachOf(function(ch){
c.push(ch['channel_name'])
})

resolve(c)
})
})
}

并且在calculate 中,如果需要,您还可以使用await,并且正如@netchkin 所指出的,您不需要async/await send 中只要它返回 await:

function send(){
return get_all_channels()
}

async function calculate(){
alert(await send())
}

关于javascript - 使用异步/等待不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45207698/

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