使用本机Promise的异步事件队列

时间:2016-05-26 10:04:02

标签: javascript events asynchronous queue

我正在努力建立"事件"队列类似于:https://stackoverflow.com/a/24932757/6385482

但不使用任何库(例如jQuery,Bluebird,Q)

实施例: 我有一个数组

var event = [func1, func2, func3];

...我希望实现名为'每个' itaretes' event'并按顺序调用异步函数。

抱歉我的英文。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

感谢您的回复。 函数已经是异步的,我需要在func1完成后调用func2(它们不能重叠)... 我使用Bluebird编写了这个函数,这是一个例子:

var Bluebird = Promise.noConflict();

var items = [
    function () {
        return new Bluebird(function (resolve, reject) {
            console.log("promise1 pending");
            setTimeout(function () {
                console.log("promise1 fulfilled");
                resolve();
            }, 1000)
        })
    },
    function () {
        return new Bluebird(function (resolve, reject) {
            console.log("promise2 pending");
            setTimeout(function () {
                console.log("promise2 fulfilled");
                resolve();
            }, 500)
        })
    },
];

Bluebird.each(items, function (item, i) {
    return item();
});

这正是我所需要的,首先调用" promise1等待"然后" promise1履行",然后" promise2等待"并且" promise2履行了#34; ...

我尝试用原生Prosmises编写这个函数,但我无法弄清楚如何。

感谢您的帮助