I want to use async await in an onMessage listener:
chrome.runtime.onMessage.addListener(async (request, sender, sendResponse) =>{
var key = await getKey();
sendResponse(key);
});
However I get undefined when I send a message.
From the documentation for chrome.runtime.onMessage.addListener:
This function becomes invalid when the event listener returns, unless
you return true from the event listener to indicate you wish to send a
response asynchronously (this will keep the message channel open to
the other end until sendResponse is called).
This works when I use a callback.
chrome.runtime.onMessage.addListener(async (request, sender, sendResponse) =>{
getKey(key => {
sendResponse(key);
});
return true;
});
However I would like to leverage the await syntax. But it does not seem to work and still returns undefined:
chrome.runtime.onMessage.addListener(async (request, sender, sendResponse) =>{
var key = await getKey();
sendResponse(key);
return true;
});
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…