如何设置收听来自 window.postMessage 的消息的超时时间?

How to setTimeout for listening to messages coming from window.postMessage?

我怎样才能只在一段时间内收听来自 window.postMessage 的消息?

我尝试在事件侦听器的函数中使用 setTimeout,但这不起作用。

我的尝试:

function processMessages(message) {
//setTimeout(function() {
    if (message) {
        console.log("you have a message");
    } else {
        console.log("no messages came"); //<=== I can't get here!
    }
//},10000);
    window.removeEventListener("message", processMessages, false);
}

window.addEventListener("message", processMessages, false);

重新安排您的代码以将 .removeEventListener() 调用置于 setTimeout() 内,而无需置于 processMessage 函数内

function processMessages(message) {
    if (message) {
        console.log("you have a message");
    } else {
        console.log("no messages came"); //<=== I can't get here!
    }   
}

window.addEventListener("message", processMessages, false);

var timeout = setTimeout(function() {
                window.removeEventListener("message", processMessages, false);
              }, 10000);

您设置了事件超时 运行,但是您的消息的 removeEventListener 没有延迟。