如图,在返回数据的时候,有时候articles会是undefined,导致上述问题,但是有时候会查询成功,不会出现错误,有时候会出现articles为undefined错误,后台用的是koa,模版引擎是koa-ejs,求解,谢谢。
undefined
koa-ejs
result变量申明是多余的,undefined表明未获得数据,在回调中if (err) { console.error(err) }看看问题出在哪里
await不是你那样用的,不需要回调函数的,应该写成await articles = Article.find({});或者使用promise的then,你现在完全按照同步的方式写代码,实际上代码是异步执行
来自酷炫的 CNodeMD
await并不是万能的。。他只是把一个promise链同步了,当你的await关键字后面跟的不是一个promise对象的时候,await其实就不具备了把异步变成同步的功能,举个例子:
const timer = function () { setTimeout(() => { console.log(1) }, 1000); }; const fun = async () => { await timer(); console.log(2); }; fun();
和
const timer = function () { return new Promise((resolve) => { setTimeout(() => { console.log(1) resolve() }, 1000); }); }; const fun = async () => { await timer(); console.log(2); }; fun();
但是可以包装一下转成 promise 嘛,不包装的话不就是回调地狱了么
@shynome 谢谢
@lucky-leaf 谢谢
@zhangmingfeng 谢谢
@wangchaoduo 谢谢
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
result变量申明是多余的,undefined表明未获得数据,在回调中if (err) { console.error(err) }看看问题出在哪里
await不是你那样用的,不需要回调函数的,应该写成await articles = Article.find({});或者使用promise的then,你现在完全按照同步的方式写代码,实际上代码是异步执行
来自酷炫的 CNodeMD
await并不是万能的。。他只是把一个promise链同步了,当你的await关键字后面跟的不是一个promise对象的时候,await其实就不具备了把异步变成同步的功能,举个例子:
和
但是可以包装一下转成 promise 嘛,不包装的话不就是回调地狱了么
@shynome 谢谢
@lucky-leaf 谢谢
@zhangmingfeng 谢谢
@wangchaoduo 谢谢