蓝鸟承诺和事件
bluebird promise and events
我必须重构现有的 JavaScript 代码。这包括一个验证库和一些编辑器。我是 Promise 的新手。旧代码是(以下简化):
$this.bind("validation.validation", function (event, params) {
var value,
errorsFound = [];
value = params.editor.getValue();
$.each(validators, function (i, validator) {
if (validator.validate(value)) {
errorsFound.push(validator.getErrMsg());
}
});
return errorsFound;
});
事件validation.validation多处触发。 returned 数组包含错误消息。
编辑器是全新的,不使用 getValue() return 值,而是 return Promise。
$this.bind("validation.validation", function (event, params) {
var errorsFound = [];
params.editor.read().then(function (value) {
$.each(validators, function (i, validator) {
if (validator.validate(value)) {
errorsFound.push(validator.getErrMsg());
}
});
return errorsFound;
});
// return ??? what ???
});
如果可能的话,我希望避免完全重构此验证代码。但是事件处理程序 return 怎么可能是异步的呢?这甚至可能吗?
谢谢
您需要return Promise。然后调用代码需要理解 Promise 并在 Promise 解析后获取值。否则,没有多少可以做的。在 ES6 中没有类似 Async/Await 的东西。
我必须重构现有的 JavaScript 代码。这包括一个验证库和一些编辑器。我是 Promise 的新手。旧代码是(以下简化):
$this.bind("validation.validation", function (event, params) {
var value,
errorsFound = [];
value = params.editor.getValue();
$.each(validators, function (i, validator) {
if (validator.validate(value)) {
errorsFound.push(validator.getErrMsg());
}
});
return errorsFound;
});
事件validation.validation多处触发。 returned 数组包含错误消息。 编辑器是全新的,不使用 getValue() return 值,而是 return Promise。
$this.bind("validation.validation", function (event, params) {
var errorsFound = [];
params.editor.read().then(function (value) {
$.each(validators, function (i, validator) {
if (validator.validate(value)) {
errorsFound.push(validator.getErrMsg());
}
});
return errorsFound;
});
// return ??? what ???
});
如果可能的话,我希望避免完全重构此验证代码。但是事件处理程序 return 怎么可能是异步的呢?这甚至可能吗?
谢谢
您需要return Promise。然后调用代码需要理解 Promise 并在 Promise 解析后获取值。否则,没有多少可以做的。在 ES6 中没有类似 Async/Await 的东西。