如何等待未知调用者调用函数?
Posted
技术标签:
【中文标题】如何等待未知调用者调用函数?【英文标题】:How can I wait for a function to be called by an unknown caller? 【发布时间】:2022-01-22 23:10:06 【问题描述】:我有一个回调函数,它被我无法控制的其他对象调用。我需要等到这个回调函数被调用,我不管是谁。
var successFunc = function()
// do stuff
myObject.onSuccess = successFunc;
// hang on until successFunc is called...
我找到了这个 hacky 解决方法,但它很糟糕:
var completed = false;
var successFunc = () =>
// do stuff
completed = true;
myObject.onSuccess = successFunc;
while (!completed)
sleep(200); // sleeps for 200 ms
【问题讨论】:
你需要使用一个 promise developer.mozilla.org/en-US/docs/Web/javascript/Reference/… 或者在你的 successFunc 中调用下一步 【参考方案1】:创建一个promise,将它的resolve
函数作为回调传递给未知的调用者,听promise的解析:
let callback;
const promise = new Promise(r => callback = r);
promise.then(() => console.log('unknown caller called'));
setTimeout(function unknownCaller()
console.log('randomly calling back');
callback();
, Math.random() * 5000);
【讨论】:
以上是关于如何等待未知调用者调用函数?的主要内容,如果未能解决你的问题,请参考以下文章