sha*_*are 14 javascript google-chrome promise q
我使用支持Promise规范的Q库.但我也尝试使用不久前在Chrome中实现的Promise类(实验性的).
Q中的延迟函数可用于创建未履行的承诺,可以在将来解决或拒绝.
我使用Chrome中提供的原生Promise实现了相同的功能.这是一个例子:
var defer = function() {
var result = {};
result.promise = new Promise(function(resolve, reject) {
result.resolve = function(value) {
resolve(value);
};
result.reject = function(value) {
reject(value);
};
});
return result;
};
var deferred = defer();
deferred.promise.then(function(value) {
alert(value);
});
deferred.resolve(10);
Run Code Online (Sandbox Code Playgroud)
我很好奇这个解决方案中存在任何设计缺陷,例如性能下降或不正确.
Esa*_*ija 16
您正在创建不必要的函数对象.
你可以这样做:
var defer = function() {
var result = {};
result.promise = new Promise(function(resolve, reject) {
result.resolve = resolve;
result.reject = reject;
});
return result;
};
Run Code Online (Sandbox Code Playgroud)
设计缺陷首先是这样做,如果你使用Q,本机承诺是没用的.
有关基准测试,请参见http://bluebirdjs.com/docs/benchmarks.html.还有一些JSPerf基准测试,但"对于一个相当快的承诺实现延迟将由所使用的调度程序完全确定,因此对基准测试不感兴趣.基准测试承诺的JSPerfs倾向于对延迟进行基准测试."
归档时间: |
|
查看次数: |
3890 次 |
最近记录: |