Подтвердить что ты не робот

Как добавить обратный вызов функции в javascript

У меня есть две функции javascript

function one () {
   do something long... like writing jpgfile on disk
}

function two () {
   do something fast... like show the file
}

Я называю это (в jQuery) следующим образом

 one ();
 two ();

Поскольку для функции two нужен файл ссылки из одной функции, мне нужно убедиться, что выполнение завершено... поэтому получение функции два в обратном вызове функции должно быть трюком.. но как это сделать?

note: Я поставил предупреждение ('aaa') между этими двумя функциями, чтобы функция была одной полной, и она отлично работала... когда предупреждение отправлено (удалено), ничего не работает!

4b9b3361

Ответ 1

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

Обратный вызов - это просто передача функции в качестве аргумента, а затем вызов ее по завершении.

function one (callback) {
   do something long... like writing jpgfile on disk
   callback();
}

function two () {
   do something fast... like show the file
}

one(two);

Очевидно, что если вы делаете что-то асинхронное, вам нужно что-то, что скажет вам, когда оно будет завершено (например, при запуске события).

Ответ 2

Простой:

function one (callback) {
   do something long... like writing jpgfile on disk

    if(callback) callback();
}

function two () {
   do something fast... like show the file
}

one(two);

Ответ 3

Попробуйте это,

$.when($.ajax(fuction1())).then(function () {

fuction2;

});

Здесь fuction1 - ваша первая функция для вызова, а fuction2 - ваша вторая функция.

Ответ 4

Мне кажется легким, если браузер ждет завершения процесса внутри "one()" перед выполнением следующей строки команды. Айсберг попал в титаник, потому что он не ждет. Затем выполните следующее:

one(two) // while two is the callBack parameter

не отличается от:

one()
two()

Я предлагаю использовать setInterval.

function one(){
    //--- Write the file to disk
    //.....................
}

function runTwo(){
    if (check_the_written_file_existence){
         clearInterval(t)
         two();
    }
}
var t = setInterval("runTwo()",500)

Самое главное, что если событие "long process" в функции "one()" произошло, вам просто нужно связать функцию с этим событием. Если, вы не должны проверять результат каким-либо образом за каждый промежуток времени, пока это не будет выполнено.