首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何访问内部函数数据javascript

如何访问内部函数数据javascript
EN

Stack Overflow用户
提问于 2019-10-03 11:22:46
回答 1查看 96关注 0票数 0

我有一个内部函数onMessage,它有一个参数消息,我想将它存储在一个变量中,并将其作为主函数的返回发送。

但问题是I无法访问onMessage函数之外的消息

我尝试过将它存储在变量 fusedata 中,但是当我在函数外打印fusedata时,im得到了未定义的

不管怎样,我可以改进这个代码吗?

代码语言:javascript
复制
const { createDfuseClient,InboundMessage ,InboundMessageType } = require("@dfuse/client")

global.nodeFetch = require("node-fetch");
global.WebSocket = require("ws");
let fusedata;
async function dfuseListener()
{

  const client = createDfuseClient({
    apiKey: 'mobile_<MY-API-KEY>',
    network: "jungle",

    httpClientOptions: {
        fetch: nodeFetch,

      },

      streamClientOptions: {
        socketOptions: {
          webSocketFactory: async (url) => {

            const webSocket = new WebSocket(url, {
              handshakeTimeout: 30 * 1000, // 30s
              maxPayload: 200 * 1024 * 1000 * 1000 // 200Mb

                        })
            const onUpgrade = (response) => {
              console.log("Socket upgrade response status code.", response.statusCode)

              // You need to remove the listener at some point since this factory
              // is called at each reconnection with the remote endpoint!
              webSocket.removeListener("upgrade", onUpgrade)
            }

            webSocket.on("upgradeurl", onUpgrade)

            return webSocket
          }
        }
      }

  })


  const onMessage = (message) => {
    console.log('onMessage :')    
    fusedata=message;
    console.log('im working ',message);
    if (message.type === InboundMessageType.PROGRESS) {
      // updateProgress(networkName, message);
    } else if (message.type === InboundMessageType.ACTION_TRACE) {
    //  updateAction(message.data);
    } else {
      console.log(message);
    }

  }

  const stream = await client.streamActionTraces(
    {
      accounts: "guru11111111"
    },
    onMessage,
    {
      start_block:  52797826,
      with_progress: 60
    },console.log('hey its here')
  )  

  console.log("Socket is now connected.",fusedata)

  return{
      onMessage
  }

}
module.exports=dfuseListener;
EN

回答 1

Stack Overflow用户

发布于 2019-10-03 11:29:40

可能是个很长的机会,但是试试这样的方法

代码语言:javascript
复制
  const onMessage = (message) => {
    console.log('onMessage :')    
    fusedata=message;
    console.log('im working ',message);
    if (message.type === InboundMessageType.PROGRESS) {
      // updateProgress(networkName, message);
    } else if (message.type === InboundMessageType.ACTION_TRACE) {
    //  updateAction(message.data);
    } else {
      console.log(message);
    }
    return message;
  }

 const yourVariableName = onMessage(message)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58218124

复制
相关文章

相似问题

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