假设我有这两个功能:
function complex() {
setTimeout(function() {
console.log('complex setTimeout');
}, 1000); // assume this value is random
function subFun() {
console.log('complex subFun');
setTimeout(function() {
console.log('complex subFunction setTimeout');
}, 2000); // assume this value is random
}
subFun();
}
function simple() {
console.log('simple');
}
假设我没有写它们 - 它们是第三方。现在我想同步调用它们并得到:
complex subFun
complex setTimeout
complex subFunction setTimeout
simple
问题是,我不能使用回调(第三方功能)。我也不能使用承诺或事件(同样的原因)。由于函数arity,我无法使用async
和step
模块。我怎么能在simple()
(和所有嵌套的子函数)同步后调用complex()
?还有JavaScript sux吗? :)
答案 0 :(得分:1)
如何同步地在[异步事物]之后调用simple()?
你做不到。这是异步与同步的定义。
如果你有没有反馈的异步脚本,你只有两个选择:
setInterval
或类似内容轮询脚本结果,并在检测到已到达后执行simple()