为什么 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))
我正在尝试从外部 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))