首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法在Promise回调中写入socketio?

无法在Promise回调中写入socketio?
EN

Stack Overflow用户
提问于 2017-12-11 06:00:51
回答 1查看 122关注 0票数 1

如果我将socket.emit移到该函数之外,就会发生套接字发出事件。但是,我需要获取promise回调中的“values”数据。这种情况下的socket emit事件不会发生。

代码语言:javascript
运行
复制
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)
EN

回答 1

Stack Overflow用户

发布于 2017-12-11 12:52:43

Axios正在返回一个promise,因此您不需要创建新的Promise,并且如果有任何错误,您应该捕获错误:

代码语言:javascript
运行
复制
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
    )
  }
);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47743929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档