дождитесь возвращения асинхронной функции JavaScript - PullRequest
8 голосов
/ 16 июня 2010

Я использую функцию, предоставляемую сторонней библиотекой.Эта функция принимает функцию обратного вызова в качестве параметра, но я хотел бы дождаться вызова этого обратного вызова, прежде чем продолжить.Есть ли стандартный / принятый способ сделать это?

Ответы [ 3 ]

6 голосов
/ 16 июня 2010

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

В основном это ваша оригинальная функция:

function origFunc() {

    codeBeforeThirdPartyFunc();
    ThirdPartyFunc(oldCallBackFunc);
    Wait();
    codeAfterCallBackFunc();
}

Вы можете изменить поток кода следующим образом:

function newFunc() {
    codeBeforeThirdPartyFunc();
    ThirdPartyFunc(newCallBackFunc);
}
function newCallBackFunc() {
  oldCallBackFunc();
  codeAfterCallBackFunc();
}

Это исключит цикл ожидания. И, насколько я знаю, ожидание в IE не работает (потому что? Бог только знает) ..

1 голос
/ 20 января 2012

Вот еще один метод асинхронной загрузки jQuery , который не зависит от другого скрипта.

0 голосов
/ 22 августа 2010

Я не знаю, будет ли решение Шарада работать во всех случаях (например, если ваши вызовы функций настолько скованы, что вам придется передавать данные в виде переменных вместо параметров). Та же проблема с глобальными переменными. У JavaScript просто нет способности «ждать».

Хотя у меня была похожая проблема и с jQuery, в итоге я нашел решение типа MacGyver, которое дает вам тонны контроля над выполнением функций javascript. Я только что опубликовал это здесь как ответ на свой вопрос (но я не отвечал на этот вопрос - ищите мое имя пользователя Эмиль): Как получить переменную, возвращаемую несколькими функциями - Javascript / jQuery

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