我有一个内部函数onMessage,它有一个参数消息,我想将它存储在一个变量中,并将其作为主函数的返回发送。
但问题是I无法访问onMessage函数之外的消息
我尝试过将它存储在变量 fusedata 中,但是当我在函数外打印fusedata时,im得到了未定义的。
不管怎样,我可以改进这个代码吗?
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;发布于 2019-10-03 11:29:40
可能是个很长的机会,但是试试这样的方法
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)https://stackoverflow.com/questions/58218124
复制相似问题