|
@@ -10,7 +10,9 @@ class IframeMessageCenter {
|
|
|
}
|
|
|
|
|
|
send({ info = {}, data = {}, callback, overTime, failback }) {
|
|
|
- info.messageId = `${info.actionType}-${guid()}` // 唯一的ID,用于标记回调函数
|
|
|
+ if (callback) {
|
|
|
+ info.messageId = `${info.actionType}-${guid()}` // 唯一的ID,用于标记回调函数
|
|
|
+ }
|
|
|
window.parent.postMessage({
|
|
|
info,
|
|
|
data
|
|
@@ -24,14 +26,14 @@ class IframeMessageCenter {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- listen(messageId, callback) {
|
|
|
+ listen(key, callback) {
|
|
|
// 序列添加失败回调
|
|
|
- this.messageCallbackMap.set(messageId, { callback })
|
|
|
+ this.messageCallbackMap.set(key, { callback })
|
|
|
}
|
|
|
|
|
|
- addFailback(messageId, overTime = 2000, failback) {
|
|
|
+ addFailback(key, overTime = 2000, failback) {
|
|
|
// 序列添加失败回调
|
|
|
- this.messageFailbackMap.set(messageId, {
|
|
|
+ this.messageFailbackMap.set(key, {
|
|
|
time: new Date().getTime(),
|
|
|
overTime,
|
|
|
failback
|
|
@@ -42,16 +44,27 @@ class IframeMessageCenter {
|
|
|
init() {
|
|
|
window.addEventListener('message', (e) => {
|
|
|
let { info = {}, data = {} } = e.data;
|
|
|
- // 序列删除 失败回调
|
|
|
- this.messageFailbackMap.delete(info.messageId);
|
|
|
+ let key, item
|
|
|
+
|
|
|
+ // 如果有messageId && 是自己发送的
|
|
|
+ if (info.messageId) {
|
|
|
+ key = info.messageId
|
|
|
+ item = this.messageCallbackMap.get(key)
|
|
|
+ }
|
|
|
+
|
|
|
+ if (info.actionType && !item) {
|
|
|
+ key = info.actionType
|
|
|
+ // 序列删除 失败回调
|
|
|
+ item = this.messageCallbackMap.get(key)
|
|
|
+ }
|
|
|
|
|
|
// 执行成功回调
|
|
|
- const _item = this.messageCallbackMap.get(info.messageId);
|
|
|
- if (_item) {
|
|
|
- const callback = _item.callback
|
|
|
+ if (item) {
|
|
|
+ this.messageFailbackMap.delete(key)
|
|
|
+ const callback = item.callback
|
|
|
callback(data)
|
|
|
// 序列删除 成功回调
|
|
|
- this.messageCallbackMap.delete(info.messageId)
|
|
|
+ this.messageCallbackMap.delete(key)
|
|
|
}
|
|
|
})
|
|
|
|