【发布时间】:2019-04-25 18:54:49
【问题描述】:
我有一个使用回调来工作的库(假设我无法编辑该库的函数)。
我希望能够知道是否调用了回调,如果没有,请执行一些操作。
这是一个快速的 MCVE 来揭露我的问题:
const networkError = false;
(function() {
getUser(name => console.log('Username is', name));
if(!'Some condition that says if the callback failed')
console.log('Network error, can not fetch name');
})();
function getUser(callback) {
if (!networkError) callback('John Doe');
}
最终目标是管理身份验证。我想测试用户是否已连接,如果没有,则重定向到另一个页面用户不会看到记录的页面内容。到目前为止,我发现的只是在回调中使用带有布尔值的 Timeout,但这根本不稳定......
【问题讨论】:
-
回调是同步调用还是异步调用。如果是异步的,你想等待执行多长时间?
-
哪个函数不能在getUser中编辑getUser或callback?
-
@Ashish 它是异步的,我想让它同步(如果可能的话),这样我就不必玩超时了。
-
@ducmai 我可以编辑回调,而不是 IIFE 之外的函数。
-
@tricheriche 您已经告诉过您只能修改回调函数,而不能修改调用回调的函数,因此如果行为是异步的。你不能让它同步。
标签: javascript callback asynccallback