loopback async / await UnhandledPromiseRejectionWarning问题

时间:2017-05-15 16:04:39

标签: node.js asynchronous async-await loopbackjs loopback

在环回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。我无法弄清楚该承诺的位置,一旦删除了异步/等待,此消息就会消失。

2 个答案:

答案 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