Javascript等到定义函数

时间:2018-12-12 07:59:50

标签: javascript promise async-await

我想:

  1. 等待直到定义了函数A(它在异步加载的文件中)
  2. 然后运行功能B
  3. ,我想为此创建一个通用包装,以便我可以直接制作类似waitFor(functionToWait, functionToExecute)

    的东西
    • 我有第1部分和第2部分的结果,但是它基于setTimeout / setInterval,但是我想知道是否会有更优雅的方式(就像在等待的函数上使用观察者一样)
    • 我对第二部分一无所知,尤其是如何使用字符串参数将其转换为函数引用。

谢谢

1 个答案:

答案 0 :(得分:1)

我的答案是来自以下方面的答案的组合: What is the JavaScript version of sleep()?和: How to check if function exists in 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() { };