首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >同步postMessage

同步postMessage
EN

Stack Overflow用户
提问于 2018-02-22 15:29:59
回答 1查看 1.4K关注 0票数 1

有没有办法使postMessage成为“同步调用”?意思:

  • 做postMessage从父到iFrame
  • 等待,直到父级返回消息(从iFrame发送)

例如:

代码语言:javascript
复制
function doSomething() {
   targetiFrame.postMessage('actionA');
   handleMessage('actionA').then(function() {
      return true;
   });
}

function handleMessage(action) {
   return new Promise(function(resolve, reject) {
   });
}

当然,这将无法工作,因为我触发了handleMessage,而只有当正确的消息接收到时才应该触发它。是否有一种方法可以等到“actionA”消息收到,然后才以返回true结束该函数?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-25 13:50:17

我这样解决了问题:

代码语言:javascript
复制
let doSomethingResolveCallback;
let doSomethingRejectCallback;

function doSomething() {
  return new Promise(resolve, reject) => {
    doSomethingResolveCallback = resolve;
    doSomethingRejectCallback = reject;
    targetiFrame.postMessage('actionA');
  }
}

// handles messages from the iFrame
function handleMessage(event) {
   if (event.action === "answerToActionA") {
     doSomethingResolveCallback(event.data);
   }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48931201

复制
相关文章

相似问题

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