I'm trying to pass a promise object via a Custom Event's detail property.
scriptA.js
async function myFunc() {...}
document.addEventListener('eventA', function (event) {
const outputEvent = new CustomEvent('eventB', { detail: { promise: myFunc() } });
document.dispatchEvent(outputEvent);
});
scriptB.js
document.addEventListener('eventB', async function (event) {
const { promise } = event.detail;
const result = await promise;
console.log('result', result);
});
Then I try to call this (either from scriptB or from a 3rd unrelated script, after both scriptA and scriptB were loaded):
document.dispatchEvent(new CustomEvent('eventA'));
When I print the detail object in scriptA before dispatching the event, it shows the promise object correctly, but it doesn't arrive to to scriptB at all - the detail property arrives as null.
Am I missing something here?
When I create a sandbox to replicate it, it works fine.
However, in my actual code, it doesn't. here are screenshots from Chrome debugger:
If I don't include the response (which is a Promise object) in the dispatched detail, everything arrives correctly.
from Passing a promise in a Custom Event detail



No comments:
Post a Comment