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

时间:2017-12-27 03:13:46

标签: javascript promise

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

UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝ID:2):TypeError:无法读取属性' name'为null

这是我的代码:

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]) {
    ...

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

1 个答案:

答案 0 :(得分:1)

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

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

或者您只是想拒绝承诺,因为解析价值不是您所期望的,您可以按照菲尔提供的方式投掷或返回Promise.reject("Something should not be null")