node.js promise在if语句中没有解析

时间:2017-12-14 05:26:32

标签: javascript node.js promise

在promises中寻求一些帮助,为什么在if语句中解析不起作用?

async getTrades() {
    return new Promise(function (resolve, reject) {
        if (this.exchange === 'GDAX') {
            resolve('fake')
            console.log('inside GDAX')
        }
    }.bind(this))
}

当我将决心放在if语句之外(之前或之后)时,它会起作用。 console.log('inside GDAX')会触发,因此this.exchange ==='GDAX'会返回true。

以下是调用它的函数:

getHistoricalPortfolioReturn() {
    return new Promise(function (resolve, reject) {
        var exchange_trades_calls = []
        for (var exchange_account in this.exchange_accounts) {
            if (this.exchange_accounts.hasOwnProperty(exchange_account)) {
                exchange_trades_calls.push(this.exchange_accounts[exchange_account].getTrades())
            }
        }
        Promise.all(exchange_trades_calls)
        .then(function (trades) {
            console.log('resolved')
            console.log('trades: ' + trades)
            resolve(trades)
        })
        .catch(function (error) {
            console.error('error: ' + error)
        })
    }.bind(this))
}

1 个答案:

答案 0 :(得分:4)

您正在使用async功能。您不必返回承诺,因为它将自动包含在承诺中。

async getTrades() {
    if(this.exchange === 'GDAX')  return "fake";
}

tldr:你正在解决错误的承诺。