当前位置:  开发笔记 > 编程语言 > 正文

特设承诺库

如何解决《特设承诺库》经验,为你挑选了1个好方法。

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

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

很简单.也就是说,我现在正在使用Aurelia,它与Angular没有绑定到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()?]

  }

}

Estus Flask.. 5

  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'});
  }

一旦适当的承诺实现已经存在,那么不应该回到jQuery范围之外的Deferred(反)模式.

dataService 如果不断需要,可以在内部进行模拟.



1> Estus Flask..:
  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'});
  }

一旦适当的承诺实现已经存在,那么不应该回到jQuery范围之外的Deferred(反)模式.

dataService 如果不断需要,可以在内部进行模拟.

推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有