javascript - 使用reduce和promise在数组中顺序执行函数
问题描述
我有一系列函数
var functionArray = [function1, function2, function3];
函数看起来像这样。都是一样的
var function2 = (value, callback) => {
setTimeout(() => {
value++;
callback(null, value);
}, 2000);
}
我想使用reduce
and顺序执行这些功能promises
。但是下面的代码不起作用。我无法理解它。
var wrapper = (functionName, value) => {
return new Promise((resolve, reject) => {
functionName(value, (error, returnedValue) => {
console.log(returnedValue);
resolve(returnedValue);
});
});
}
var execute = function () {
return functionArray.reduce((promise, currentFunction) => {
return promise.then((value = 10) => {
wrapper(currentFunction, value);
});
}, Promise.resolve());
};
当我调用execute
值 11 时,会立即打印 3 次。我在这里错过了什么吗?
现场片段:
var function1 = (value, callback) => {
setTimeout(() => {
value++;
callback(null, value);
}, 2000);
}
var function2 = (value, callback) => {
setTimeout(() => {
value++;
callback(null, value);
}, 2000);
}
var function3 = (value, callback) => {
setTimeout(() => {
value++;
callback(null, value);
}, 2000);
}
var wrapper = (functionName, value) => {
return new Promise((resolve, reject) => {
functionName(value, (error, returnedValue) => {
console.log(returnedValue);
resolve(returnedValue);
});
});
}
var execute = function () {
return functionArray.reduce((promise, currentFunction) => {
return promise.then((value = 10) => {
wrapper(currentFunction, value);
});
}, Promise.resolve());
};
var functionArray = [function1, function2, function3];
execute();
解决方案
the return values are not correct.
Parameter is always 10.
return wrapper(currentFunction, value, timeout);
See:
https://jsfiddle.net/js1n6xL3/3/
Maybe this can help you too: https://gist.github.com/anvk/5602ec398e4fdc521e2bf9940fd90f84
推荐阅读
- sql - SQL "$" 符号用法
- php - 自动将新条目添加到表 codeigniter
- wordpress - 当我配置我的子域时 ERR_TOO_MANY_REDIRECTS
- amazon-web-services - AWS S3 Sync --force-glacier-transfer
- google-api - 为私有应用环境发布 Google OAuth 开发者验证表
- swift - 你在哪里声明与 Swift 中的 addGestureRecognizer() 相关的 UITapGestureRecognizer()?
- ios - 有没有办法用代码将约束添加到 xcode 故事板中?
- android - Android apk后的离子网页错误
- mysql - 如何确定过去 30 天内每位用户的邀请数?
- java - org.springframework.beans.factory.UnsatisfiedDependencyException:创建带有名称的 bean 时出错。无法让我的 springboot 应用程序运行