为什么 console.log 在 node.js 中的承诺实现之前执行

Why console.log is executing before promise is fulfilled in node.js

我正在尝试从外部 API 提取数据,然后创建一个比特币出价数组,然后控制台记录输出。问题是控制台日志功能在从服务器返回数据之前正在执行。这将创建一个空数组。请告诉我如何解决这个问题。

const express = require('express')
const app = express()
const port = 6800
app.listen(port, () => {
    port
})
const GateApi = require('gate-api');
const client = new GateApi.ApiClient();

var _array = [] // store data returned from server

const api = new GateApi.SpotApi(client);  //gate-io api  
const currencyPair = "BTC_USDT"; // string | Currency pair
const opts = {
    'limit': 10 // limit records returned
};

api.listOrderBook(currencyPair, opts).then(value => {
    return value.body.bids.forEach(function(data) {
        _array.push(data);
    });
}, error => console.error(error)).then(console.log(_array))

then 的参数应该是一个函数。一旦承诺履行,该功能将被执行。

您没有传递函数,您传递的是 console.log() 结果

而不是:

.then(console.log(foo))

你会想要:

.then(() => console.log(foo))