简体   繁体   English

如何使用setTimeout监听来自window.postMessage的消息?

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

How can I listen to the messages coming from window.postMessage only for amount of time? 我如何只听取来自window.postMessage的消息一段时间?

I tried to use setTimeout inside the the event listener's function but this doesn't work. 我试图在事件侦听器的函数中使用setTimeout ,但这不起作用。

My try: 我的尝试:

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);

Rearrange your code to place .removeEventListener() call within setTimeout() , which does not need to be within processMessage function 重新排列代码以将.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);

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM