gpt4 book ai didi

javascript - Websockets - 在 onmessage() 之外传递数据

转载 作者:行者123 更新时间:2023-12-02 13:43:09 25 4
gpt4 key购买 nike

我的 WebExtension 连接到 WebSockets 服务器以检索数据。

function foo(responseDetails){
var ws = new WebSocket("ws://localhost:9876/");

ws.onopen = function(event){
// send some data to the server
ws.send("some data");
}

ws.onmessage = function(event){
// receive some data from the server
data = event.data;
}

// how to access the data from here?
if(data == 0)
return {cancel:true}
else
return {cancel:false}
}

browser.webRequest.onBeforeRequest.addListener(
foo,
{urls:["*//*/*"]},
["blocking"]
)

每当请求完成时,函数foo()调用它打开一个 WebSocket 到 ws://localhost:9876 ,发送一个字符串,然后接收 data 。该数据决定请求是否会被阻止。

读完the answers here后,我还是一头雾水。我不确定如何在函数 foo() 内实现回调.

Similar question但答案不是我正在寻找的。

最佳答案

您可以针对这个确切的用例使用 Promise,如下所示应该有效:

function foo(responseDetails) {
return new Promise(function(resolve) {
var ws = new WebSocket("ws://localhost:9876/");

ws.onopen = function(event) {
// send some data to the server
ws.send("some data");
}

ws.onmessage = function(event) {
// receive some data from the server
var data = event.data;
if (data == 0) {
resolve({
cancel: true
});
} else {
resolve({
cancel: false
})
}
}
});
}

browser.webRequest.onBeforeRequest.addListener(
foo, {
urls: ["*//*/*"]
}, ["blocking"]
)

更多信息可以找到here

关于javascript - Websockets - 在 onmessage() 之外传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43939957/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com