выполнять функцию за другой - PullRequest
3 голосов
/ 12 мая 2011

У меня есть этот код JavaScript:

 if (direction !== "leftnav") { 
// DO THINGS
};
setTimeout(function () {
//DO OTHER THINGS AFTER THE FIRST THING
}, 1000);

Можно ли выполнить функцию 2e после первой вместо использования события тайм-аута?

Большое спасибо за вашу помощь:)

Ответы [ 4 ]

9 голосов
/ 12 мая 2011

Да, это возможно. Вот пример использования единственного предоставленного вами кода:

if (direction !== "leftnav") {  
    // DO THINGS...

    // THEN
    doOtherThings();

    // THEN
    doMoreThings();
}; 

var doOtherThings = function(){
    //DOING OTHER THINGS
}
var doMoreThings = function(){
    //DO EVEN MORE THINGS
}
7 голосов
/ 12 мая 2011

Javascript будет работать сверху вниз, если то, что вы имеете в этом, если оператор блокирует.Если это так, вы можете просто поместить код прямо под оператором if вне тайм-аута, и он будет работать нормально.Если он асинхронный, вы можете использовать обратный вызов, который запускается при завершении первой функции, чтобы запустить вторую функцию.

Пример, приведенный ниже, не очень эффективный способ выполнения действий, но он больше используется для иллюстрации того, что яЯ говорю выше.В рамках функции write() вы можете выполнять вызов AJAX или ждать, пока пользователь щелкнет что-либо или что у вас есть.Интерпретатор переходит к следующей строке, раздел которой будет сразу записан, и в порядке блокировки.

JS

var write = function (v, cb) {
    setTimeout(function() {
        document.write(v);
        cb && cb();
    }, 1000);
}

if (true) {
    write("I'm not blocking, blah<br/>", function() {
        document.write("Running<br/>");
    });
}

if (true) {
    document.write("I'm blocking, blah<br/>");
}
document.write("Running<br/>");

Выход

I'm blocking, blah
Running
I'm not blocking, blah
Running

http://jsfiddle.net/robert/vvmyk/

0 голосов
/ 18 апреля 2018

используйте JavaScript обещание и Promise.all

0 голосов
/ 12 мая 2011

Вам просто нужно вызывать функции в нужном вам порядке

function foo(){
//code
}

function bar(){
//other
}

bar();
foo();

Как и раньше, bar будет вызываться раньше foo.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...