gpt4 book ai didi

javascript - Bluebird:运行 promise 返回函数的序列

转载 作者:行者123 更新时间:2023-11-30 08:33:19 26 4
gpt4 key购买 nike

运行动态生成的函数序列的最简洁方法是什么,其中每个函数返回一个必须在下一个运行之前解决的 Promise?

例如:

// Assume the following 'process' functions are generated elsewhere

function process_1 (input) {
return new Promise(function (resolve, reject) {
resolve(input + '_1');
});
}

function process_2 (input) {
return new Promise(function (resolve, reject) {
resolve(input + '_2');
});
}

function process_3 (input) {
return new Promise(function (resolve, reject) {
resolve(input + '_3');
});
}

// We can construct a sequence of these functions,
// but each one still needs to be 'configured' with a value
// before it can return it's promise.

var process = [process_1, process_2, process_3]

Bluebirds 上可用的收集方法 Promise (例如 alleach 等)似乎处理的集合,而不是 promise 生成函数的集合。

如果我尝试将序列映射或缩减为一系列 promise 而不是函数,那么我将失去将一个 promise 的结果传递到下一个 promise 的能力吗?

最佳答案

您可以使用 reduce为此:

bluebird.reduce( [process_1, process_2, process_3], function ( input, next ) {                                                                                                                                     
return next( input );
}, 'INPUT' ).then( function ( result ) {
console.log( result );
} );

注意:您还缺少 process_2process_3 的输入参数,必须添加才能使其工作。

function process_1 (input) {
return new Promise(function (resolve, reject) {
resolve(input + '_1');
});
}

function process_2 ( input ) {
return new Promise(function (resolve, reject) {
resolve(input + '_2');
});
}

function process_3 ( input ) {
return new Promise(function (resolve, reject) {
resolve(input + '_3');
});
}

bluebird.reduce( [process_1, process_2, process_3], function ( input, next ) {
return next( input );
}, 'INPUT' ).then( function ( result ) {
console.log( result );
} );

// INPUT_1_2_3

关于javascript - Bluebird:运行 promise 返回函数的序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34723179/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com