有没有办法使postMessage成为“同步调用”?意思:
例如:
function doSomething() {
targetiFrame.postMessage('actionA');
handleMessage('actionA').then(function() {
return true;
});
}
function handleMessage(action) {
return new Promise(function(resolve, reject) {
});
}当然,这将无法工作,因为我触发了handleMessage,而只有当正确的消息接收到时才应该触发它。是否有一种方法可以等到“actionA”消息收到,然后才以返回true结束该函数?
发布于 2019-03-25 13:50:17
我这样解决了问题:
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);
}
}https://stackoverflow.com/questions/48931201
复制相似问题