【问题标题】:async event queue using native Promises使用本机 Promises 的异步事件队列
【发布时间】:2016-05-26 10:04:02
【问题描述】:

我正在尝试构建类似于此的“事件”队列:https://stackoverflow.com/a/24932757/6385482

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

示例: 我有一个数组

var event = [func1, func2, func3];

...我想实现一个名为“each”的函数,该函数 itaretes 'event' 并按顺序调用异步函数。

对不起我的英语。

感谢您的帮助。

【问题讨论】:

  • 你希望发生的事情的一个例子可能会有用。
  • 这个问题真的不清楚。 func1func2func3 是什么?它们是否已经异步,或者它们是否同步并需要包装器?你是要等到func1的工作完成后再打电话给func2,还是可以重叠?到目前为止,您看到了什么,哪些有效,哪些无效?

标签: javascript events asynchronous queue


【解决方案1】:

感谢您的回复。 函数已经是异步的,我需要在 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 pending”,然后是“promise1 fulfilled”,然后是“promise2 pending”和“promise2 fulfilled”...

我尝试用原生 Prosmises 编写这个函数,但我不知道怎么做。

感谢您的帮助

【讨论】:

    猜你喜欢
    • 2020-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-14
    • 2021-11-10
    • 1970-01-01
    • 2020-02-14
    • 2012-12-31
    相关资源
    最近更新 更多