如果我将socket.emit移到该函数之外,就会发生套接字发出事件。但是,我需要获取promise回调中的“values”数据。这种情况下的socket emit事件不会发生。
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)发布于 2017-12-11 12:52:43
Axios正在返回一个promise,因此您不需要创建新的Promise,并且如果有任何错误,您应该捕获错误:
app.io.on(
'connection',
function (socket) {
setInterval(
function () {
Promise.all(
[
axios.get('https://api.bitfinex.com/v2/book/tBTCUSD/P0'),
axios.get('https://www.bitmex.com/api/v1/orderBook/L2?symbol=xbt&depth=25')
]
).then(values =>
socket.emit(
'feed',
{
data: values
}
)
)
.catch(
e => console.warn("something went wrong:",e)
)
},
3000
)
}
);https://stackoverflow.com/questions/47743929
复制相似问题