var https = require('https');
async function getOrderBook(){
var options = {
host: 'api.bybit.com',
port: 443,
path: '/v2/public/orderBook/L2?symbol=BTCUSD',
method: 'GET'
};
https.request(options, function(res) {
res.on('data', function (chunk) {
//console.log(chunk);
return chunk;
});
}).end();
}
console.log(getOrderBook())
以下日志
Promise { undefined }
在控制台中。但是,我可以从函数内部正常记录它。如何使其等待功能解析?
答案 0 :(得分:1)
https.request()
具有回调函数。这就是您在第二个参数中传递的函数。当您在函数内return
时,您将返回那个函数的调用方,而不是 getOrderBook()
。由于在任何地方都没有承诺async/await
并没有真正的用处。您可以将请求包装在一个Promise中并返回,或者可以将回调传递给getOrderBook()
,并在请求完成后使用数据对其进行调用。例如:
var https = require('https');
function getOrderBook(cb) {
var options = {
host: 'api.bybit.com',
port: 443,
path: '/v2/public/orderBook/L2?symbol=BTCUSD',
method: 'GET'
};
https.request(options, function(res) {
let data = ''
res.on('data', function(chunk) {
data += chunk;
});
res.on('end', function() {
// All done, call the callback
cb(JSON.parse(data))
})
}).end();
}
// pass a callback that tells it what to do with the data
getOrderBook((data) => console.log(data.result))
或者,您可以使用像axios这样的具有本机Promise支持的库。
答案 1 :(得分:0)
您可以在调用异步函数之前放置await
,但是请注意,您需要处于异步函数中才能使用await
https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Op%C3%A9rateurs/await