javascript - 临时 promise 库

标签 javascript es6-promise

在使用 Angular 时,我通常使用 JQuery 的 $.Deferred 对象来即时创建 promise 。除了实际的 HTTP 请求之外,它非常适合在 promise 中返回任意模拟数据:

getMockData: function() {
   var deferred = $.Deferred();
   deferred.resolve({mockData: 'foo-bar'});
   return deferred.promise();
}

很简单。也就是说,我最近在使用 Aurelia,它不像 Angular 那样绑定(bind)到 JQuery(或 jqLit​​e)。因此,我丢失了 $.Deferred()。是否有类似的库可以提供与 $.Deferred() 相同的功能?

否则,仅安装 JQuery 并在必要时使用 $.Deferred() 是否被认为是不合适或不良做法?我怀疑这只是暂时的,但也许不是。我不反对 JQuery,但显然不想为了获得单个模块而导入它。

Aurelia 示例:

import {DataService} from './data-service';
import {inject} from 'aurelia-framework';

@inject(DataService)
export class PatientService {

  constructor(dataService) {
    this.dataService = dataService;
  }

  getPatients(url, emr) {
   // Server incomplete, so comment out the real call (for now)
   // return this.dataService.get(url + '/patients?emr=' + emr);

   [generate and return a promise here. Cool to just use $.Deferred()?]

  }

}

最佳答案

  getPatients(url, emr) {
   // Server incomplete, so comment out the real call (for now)
   // return this.dataService.get(url + '/patients?emr=' + emr);

   return new Promise((resolve) => resolve({mockData: 'foo-bar'}));
   // or
   // return Promise.resolve({mockData: 'foo-bar'});
  }

一旦适当的 promise 实现已经存在,就不应该回到 jQuery 范围之外的延迟(反)模式。

dataService 如果经常需要,可以在内部进行模拟。

关于javascript - 临时 promise 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34322607/

相关文章:

javascript - jquery 按钮名称更改不起作用

javascript - Function.name 属性有多有用?

javascript - promise 并提交

javascript - 按顺序运行 Promise

angular - 使用 Resolve 停止路由更改

javascript - Angular 中的 $q 或 ES6 中的 Promise

javascript - 确定 Chrome 中当前 DOM 元素状态

javascript - ng-bind 在 API 调用设置数据后不显示任何内容

php - 将多个带有 JavaScript 的 HTML 页面包含到一个 PHP 页面中

JavaScript promise 解析持续时间