【发布时间】:2017-12-27 12:04:54
【问题描述】:
我正在尝试使用 2 个 Promise,第二个 Promise 取决于第一个 Promise。一个 3 承诺取决于两个承诺。但是当第一个承诺失败时,我在第二个承诺中得到这个错误:
UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝 id:2):TypeError:无法读取 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]) {
...
我该如何解决这个问题?当我在我的数据库中找不到资产时,我该如何处理?
【问题讨论】:
-
您似乎只是缺少
catch(或第二个then参数)。没有它,您会收到 “未处理的承诺拒绝” 错误 -
@Phil 我在第一个承诺之后放了一个 catch,但它似乎没有进入 catch 条件。我该怎么做?
-
啊,所以第一个 Promise 解析成功,只是带有
null值。在这种情况下,您应该抛出一个错误以导致 promise 失败。那个人需要被Promise.all承诺 -
@Phil 谢谢!我将捕获添加到第三个承诺中并且它起作用了。
标签: javascript promise