Node.js 处理数组中的项,在NodeJ中的每个项之间有延迟

Node.js 处理数组中的项,在NodeJ中的每个项之间有延迟,node.js,promise,delay,Node.js,Promise,Delay,我有一个需要发送的消息列表,中间有1秒的延迟。 目前我正在使用此功能: send() { return new Promise((resolve, reject) => { this._send(resolve); }); } _send(resolve, index) { index = index || 0; if (this.messages.length && index < this.messages.len

我有一个需要发送的消息列表,中间有1秒的延迟。 目前我正在使用此功能:

send() {
    return new Promise((resolve, reject) => {
        this._send(resolve);
    });
}

_send(resolve, index) {
    index = index || 0;
    if (this.messages.length && index < this.messages.length) {
        if (this.messages[index]) {
            let response = this.messages[index];

            response.send().then(() => {
                this._schedule(resolve, index);
            });
        } else
            this._schedule(resolve, index);
    }
    else
        resolve();
}

_schedule(resolve, index) {
    setTimeout(() => {
        this._send(resolve, ++index);
    }, 1000);
}

这是正确的吗?

像这样传递
resolve
是混乱和不必要的。并使用排序发送。@Roamer-1888坦克,更新了问题。如果你想利用蓝鸟的糖分方法,那么它是一个使用and的单行程序。
Promise.reduce(
    Iterable<any>|Promise<Iterable<any>> input,
    function(any accumulator, any item, int index, int length) reducer,
    [any initialValue]
) -> Promise
_wait(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
}


__send() {
    return Promise.reduce(this.messages, function (dummy, response, index, len) {
        return response.send().then(() => {
            return this._wait(1000);
        }).catch(() => {
            //don't care about a error , continue to the next one
            return this._wait(1000);
        });
    }).then(() => {
        return true;
    });
}