临时承诺库
Ad-hoc promise library
在使用 Angular 时,我通常使用 JQuery 的 $.Deferred
对象来即时创建承诺。除了实际的 HTTP 请求之外,它非常适合在承诺中返回任意模拟数据:
getMockData: function() {
var deferred = $.Deferred();
deferred.resolve({mockData: 'foo-bar'});
return deferred.promise();
}
很简单。也就是说,我最近在使用 Aurelia,它不像 Angular 那样绑定到 JQuery(或 jqLite)。因此,我输了$.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
如果经常需要,可以在内部进行模拟。
在使用 Angular 时,我通常使用 JQuery 的 $.Deferred
对象来即时创建承诺。除了实际的 HTTP 请求之外,它非常适合在承诺中返回任意模拟数据:
getMockData: function() {
var deferred = $.Deferred();
deferred.resolve({mockData: 'foo-bar'});
return deferred.promise();
}
很简单。也就是说,我最近在使用 Aurelia,它不像 Angular 那样绑定到 JQuery(或 jqLite)。因此,我输了$.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
如果经常需要,可以在内部进行模拟。