使用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()) }
- 了解Node.JS使用async.waterfall如何执行外部函数
- 以小批次同时运行承诺(每次不超过X)
- 对大文件上JSON输出的node.js刮取器的控制stream程的改进
- 如何在node.js中使非IO操作同步与asynchronous?
- asynchronous非阻塞事件驱动方法是“asynchronous编程”的唯一方法吗?
- Async循环与mongodb nodejs
- Node.js – 为什么我的一些callback不是asynchronous执行的?
- 在NPM开始下载模块
- 如何在node.js + Express.js + mongodb应用程序上asynchronous启动摩卡testing