Javascript ждать, пока функция не будет определена - PullRequest
0 голосов
/ 12 декабря 2018

Я хочу:

  1. дождаться определения функции A (она находится в файле, загруженном асинхронно)
  2. , затем запустить функцию B
  3. и я хотел бы создать универсальную оболочку для этого, чтобы я мог напрямую сделать что-то вроде waitFor(functionToWait, functionToExecute)

    • у меня есть результат для частей 1 и 2, но он основан на setTimeout / setInterval, но я хотел бы знать, будет ли более элегантный способ (что-то вроде наблюдателя в ожидаемой функции)
    • , и я не имею ни малейшего представления о второй части, особенно о том, как использовать строковый параметр дляпреобразовать его в ссылку на функцию.

Спасибо

1 Ответ

0 голосов
/ 12 декабря 2018

Мой ответ представляет собой комбинацию ответов из: Что такое JavaScript-версия sleep ()? и: Как проверить, существует ли функция в JavaScript?

    function sleep(ms) {
        return new Promise(resolve => setTimeout(resolve, ms));
    }

    async function demo(cb) {
        while(typeof A !== "function") {
            await sleep(1000);
        }
        cb();
    }

    demo(function() { console.log("function A exists"); });

    var A = function() { };
...