使用asynchronous/等待不工作

我有一个function,它做asynchronous数据库search操作。

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)) } 

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

您需要使用get_all_channels的结果(数组c解决承诺:

 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所指出的那样,只要返回await就不需要async/await await

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