蓝鸟承诺和事件

时间:2017-05-11 16:52:11

标签: javascript jquery promise bluebird

我必须重构现有的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在很多地方被触发。返回的数组包含错误消息。 编辑器是完全新的,不使用getValue()返回值,而是返回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 ???
});

如果可能,我希望避免完整重构此验证代码。但是,事件处理程序如何返回异步的东西呢?这甚至可能吗?

谢谢

1 个答案:

答案 0 :(得分:1)

您需要返回Promise。然后调用代码需要理解Promise并在Promise结算后获取值。否则,没有太多可以做的事情。没有像ES6中的Async / Await那样的东西。