javascript – 对async / await的环回支持
作者:互联网
我正在使用loopback 3来构建REST服务,我想使用async / await而不是必须使用回调.所以不要这样做:
MyModel.myFunction = (callback) => {
MyModel.find({where: {id: 2}}, (e, data) => {
if (e) return callback(e);
callback(null, data);
});
};
我更喜欢这样做:
MyModel.myFunction = async (callback) => {
try {
const data = await MyModel.find({where: {id: 2}});
callback(null, data);
} catch (e) {
console.error(e);
callback(e);
}
};
回调方法完美无缺 – async / await会产生很多错误:
> UnhandledPromiseRejectionWarning:错误:已经调用了回调.
> UnhandledPromiseRejectionWarning:未处理的承诺拒绝.这个错误源于在没有catch块的情况下抛出异步函数,或者拒绝未使用.catch()处理的promise.
怎么了?我无法解决这个问题.
解决方法:
一些重构:
MyModel.myFunction = async () => {
try {
const data = await MyModel.find({where: {id: 2}});
return data; // it's enough as the async means it returns a promise
} catch (e) {
console.error(e);
throw e;
}
};
如果您不需要记录错误(环回错误处理程序将其记录而不是您),以防万一:
MyModel.myFunction = async () => {
return MyModel.find({where: {id: 2}});
};
标签:loopbackjs,javascript,ecmascript-6,node-js,async-await 来源: https://codeday.me/bug/20190727/1549879.html