【问题标题】:bluebird promise and events蓝鸟承诺和事件
【发布时间】:2017-10-10 19:30:18
【问题描述】:

我必须重构现有的 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 ???
});

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

谢谢

【问题讨论】:

    标签: javascript jquery promise bluebird


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-27
      • 2016-07-26
      • 1970-01-01
      • 1970-01-01
      • 2014-02-13
      • 2014-11-06
      • 2015-09-06
      • 2015-02-13
      相关资源
      最近更新 更多