在环回3中当我在保存操作挂钩
之前实现async / await时Entry.observe('before save', async (ctx, next) =>{
if(ctx.instance.images){
Entry.upload(ctx.instance.images[0].src).then(data => {
ctx.instance.image = data;
});
}
});
控制台打印此错误
(node:29323) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: Callback was already called.
(node:29323) DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
我怎样摆脱这个问题!?
PS。我无法弄清楚该承诺的位置,一旦删除了异步/等待,此消息就会消失。
答案 0 :(得分:2)
您需要为Entry.upload promise指定.catch。
Entry.upload(ctx.instance.images[0].src).then(data => {
ctx.instance.image = data;
}).catch(console.error);
某些旧版本的NodeJS可能不会出现该错误。您需要始终使用catch for promises,否则应用程序将崩溃。
答案 1 :(得分:1)
使用f
块并在声明try/catch
函数(或Promise函数)时始终返回已解决或拒绝的Promise
async