节点链承诺不会返回已解析的值

时间:2018-04-10 06:06:11

标签: javascript node.js

我正在尝试链接一个将接受输入的promise,附加到输入,在最终解析Promise之前传回结果。代码执行,我添加了一些console.log所以我知道_add24h的值被追加但似乎.then没有传递给主Promise,因为它最终解析为初始值。

我的Promise.all在代码的其他地方传递了值,但不包含来自.then的数据

module

1 个答案:

答案 0 :(得分:0)

如果您要在回调之外解决seco​​n承诺,那么即使在binance.prevDay(coin + 'USDT',...)运行之前它实际上已得到解决。

因此,您需要按照以下方式更改通话,并在回调中附上解决方案

promise2 = new Promise((resolve,reject) => {
    binance.prevDay(coin + `BTC`, (error, prevDay, symbol) => {
        for (var obj in prevDay) {
            if (obj.includes("priceChange")) {
                _add24h["24h Change"] = `\u0E3F` + prevDay[obj];
            }
        }
        resolve(_add24h);
    })
})
.then(function(_add24h) {
    return new Promise ((resolve,reject) => {
        binance.prevDay(coin + `USDT`, (error, prevDay, symbol) => {
            for (var obj in prevDay) {
                if (obj.includes("priceChange")) {
                     _add24h["24h Change"] = _add24h["24h Change"] + "\n$" + parseFloat(prevDay[obj]).toFixed(2);
                }
            }
            resolve(_add24h);
        })
    })
 })