无法处理其他承诺中的承诺失败

问题描述 投票:1回答:1

我试图使用2个承诺,第二个承诺取决于第一个承诺。 3承诺取决于两个承诺。但是当第一个承诺失败时,我在第二个承诺中得到了这个错误:

UnhandledPromiseRejectionWarning:未处理的promise promise(拒绝id:2):TypeError:无法读取null的属性'name'

这是我的代码:

var Asset  = require('../models/index').Asset;
var Price = require('../models/index').Price;

var currency = req.params.currency;

var values = { 
                where: { slugify_url: currency },                    
            };

// get asset information 
var promisse_asset = Asset.findOne(values); 


// get prices information on this asset
var promisse_prices = promisse_asset.then(function(asset) {

    console.log(asset); // outputs null
    // some processing
    if (!!asset) {
        ...  


});


return Promise.all([promisse_asset, promisse_prices]).then(function([asset, results]) {
    ...

我怎样才能解决这个问题?当我在数据库中找不到资产时,如何处理?

javascript promise
1个回答
1
投票

在某种情况下,您希望批量处理承诺并获得所有结果,包括使用Promise.all的被拒绝的结果。 here(最后一个代码块)解释了如何做到这一点。

在某种情况下,您希望在队列中捕获拒绝承诺,而不是在堆栈上没有收到警告(很快就会被弃用并获得错误)。如何做到这一点解释here

或者你只是想拒绝一个承诺,因为决心值不是你所期望的,你可以按照菲尔提供的方式抛出或者返回一个Promise.reject("Something should not be null")

© www.soinside.com 2019 - 2024. All rights reserved.