简化嵌套回调

时间:2015-11-16 15:28:58

标签: javascript callback

我有以下代码,使用resultfunc1获取callback1。但是func1正在func2使用callback2,然后依赖于第二个回调返回result或使用func3callback3来获取result 1}}。不知道在哪里放置另一个回调来获得一个result

module1.func1(arg1, function (callback1) {
    module1.func2(arg2, function (callback2) {
        if (result2) result = result2;
        else
        module2.func3 (arg3, function (callback3) {
            result = result3;
        })
    })
});

如果我向func3添加另一个回调,则只有在我无法立即从func2获得结果的情况下才会有效。也许这就是我所需要的,模式对我来说太复杂了

module.exports = function (callback) {
    module1.func1(arg1, function (callback1) {
        module1.func2(arg2, function (callback2) {
            if (result2) result = result2;
            else
                module2.func3 (arg3, function (callback3) {
                    result = result3;
                    callback(result) //???
                })
        })
    });
};

1 个答案:

答案 0 :(得分:2)

嵌套回调地狱可以通过promisses在最近的JavaScript版本中解决。网上的众多资源之一是

https://github.com/mattdesl/promise-cookbook

ES6中有Promisses,但也有几个库。我希望这可以让你知道要寻找什么。