window.postmessage等待响应问题

时间:2018-08-02 13:26:00

标签: javascript reactjs iframe postmessage

我已经为此工作了一段时间,并且正在寻求社区的帮助。

描述此问题的最佳方法是,我使用的是React / JS的第一个版本,而没有Redux,并且我有一个应用程序(Iframe),它在for循环中将window.parent.postmessages项传递给父项(因为存在X发送给父母的物品数量)。这是一个跨域应用程序,但是出于测试目的,它是相同的来源。

问题是,我需要先等待父母接受该项目,然后再发送下一个项目,但相反,它先发送所有5个项目,然后才发送响应。我怀疑这是因为JavaScript只有一个线程。我尝试过setTimeout,然后在收到消息时更新状态,但是仍然不走运,因为整个应用程序都冻结了。当我在下面的代码中将setTimeout设置10秒钟时,它什么也没做。

setTimeout(send_items(state, items[i].itemId), 10000);

问题/当前工作流程

window.addEventListener("message", item_listener, false);
for (i = 0; i < items.length; i++) {
  if (items[i].Selected == true) {
    send_items(state, items[i].itemId);
  }
}

send_items = function(state, itemKey) {
  window.parent.postMessage(
    {
      token: state.thisToken,
      action: "Car.DataSet.Brand",
      args: { ItemKey: itemKey }
    },
    "*"
  );
};

这是先发送所有5个项目,但在将消息发布给父级之后,我需要等待回信,然后再继续发布其余项目。我也有一个听众。该代码块在执行时仅发送一项。

我如何使它发送一个项目,等待答复说成功放置,而不是下一个项目?

谢谢!

0 个答案:

没有答案