【发布时间】:2018-05-24 10:40:46
【问题描述】:
如果我将 socket.emit 移到该函数之外,则会发生套接字发射事件。但是,我需要在 promise 回调中获取“值”数据。在这种情况下,套接字发出事件不会发生。
app.io.on('connection', function(socket) {
setInterval(function() {
var bitfinex = new Promise(
function(resolve, reject) {
const orderBook = 'https://api.bitfinex.com/v2/book/tBTCUSD/P0'
axios.get(orderBook)
.then(function(response) {
resolve(response)
})
.catch(function(error) {
reject(error)
});
});
var bitmex = new Promise(
function(resolve, reject) {
const orderBook = 'https://www.bitmex.com/api/v1/orderBook/L2?symbol=xbt&depth=25'
axios.get(orderBook)
.then(function(response) {
resolve(response)
})
.catch(function(error) {
reject(error)
});
});
Promise.all([bitmex, bitfinex]).then(values => {
socket.emit('feed', {
data: values
})
});
}, 3000)
【问题讨论】:
-
函数调用“不成功”会怎样?
-
没有发出套接字消息。
-
但是您没有收到任何错误?您是否尝试在您的承诺链末尾添加
.catch(console.error)? -
将
console.log("emitting now")语句放在调用旁边时是否会执行它?你用过调试器吗?
标签: javascript socket.io