【问题标题】:call two function one after another in javascript settimeout在javascript settimeout中依次调用两个函数
【发布时间】:2017-06-14 05:55:22
【问题描述】:

我需要运行以下代码

document.getElementById("someID").focus();

在下面的代码之后

setTimeout(function(){loadEditor(param);}, 50);

但我无法使其异步。因为我无法修改

function loadEditor(param){ /* some stuff */  }

有没有办法做到这一点? 我到目前为止所尝试的

setTimeout(function(){
    loadEditor(param);
    document.getElementById("someID").focus();
}, 50);

setTimeout(function(){
    $.when( loadEditor('question_stem-text') ).done(function() {
        document.getElementById("someID").focus();
        });
}, 50);

不成功

【问题讨论】:

  • loadEditor 是做什么的?
  • 它正在初始化大量值并为字段加载编辑器
  • 第一次尝试。您是否尝试过console.log() 来检查它是否被调用?
  • 是的,它被调用了
  • 检查loadEditor完成后是否实现了回调调用(我相信它是异步的,所以理论上应该)。否则,您应该编辑loadEditor 并在完成后添加回调调用。

标签: javascript function asynchronous callback


【解决方案1】:
//ES6++
const delay = new Promise( (resolve, reject) => {
    setTimeout( () = > {
        loadEditor(param);
        resolve();
    }, 50);
});

delay.then( () => {
    document.getElementById("someID").focus();
});

【讨论】:

    猜你喜欢
    • 2017-06-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-31
    • 1970-01-01
    • 2022-10-14
    • 1970-01-01
    • 1970-01-01
    • 2013-11-06
    相关资源
    最近更新 更多