我编写的代码看起来像:
function getStuffDone(param) { | function getStuffDone(param) {
var d = Q.defer(); /* or $q.defer */ | return new Promise(function(resolve, reject) {
// or = new $.Deferred() etc. | // using a promise constructor
myPromiseFn(param+1) | myPromiseFn(param+1)
.then(function(val) { /* or .done */ | .then(function(val) {
d.resolve(val); | resolve(val);
}).catch(function(err) { /* .fail */ | }).catch(function(err) {
d.reject(err); | reject(err);
}); | });
return d.promise; /* or promise() */ | });
} | }
Run Code Online (Sandbox Code Playgroud)
有人告诉我这个被称为" 延迟反模式 "或" Promise
构造函数反模式 ",这个代码有什么不好,为什么这被称为 …
我试图弄清楚我在Node v4.1.1(V8 v4.5.103.33)中看到的关于super
和箭头函数的某些行为是否是指定行为,如果是这样(或者实际上,如果不是),它在哪里它说它应该(或不应该)在我所拥有的各种情况下工作的规范.
简言之:使用super
箭头函数(inner
)内的另一个箭头功能(outer
)内的方法的工作,除非 outer
有参数还是变量inner
即使引用,inner
引用参数或变量method
.我想知道规范对此的说法:它是否应该一直有效,即使在V8失败的情况下?没有时间?只有在V8目前让它工作的特定情况下,而不是它不在哪里?
这是一个MCVE:
"use strict";
class Parent {
show(msg) {
console.log(`Parent#show: ${msg}`);
}
}
class Child extends Parent {
method(arg) {
let outer = (x) => {
console.log(`outer: x = ${x}`);
let inner = () => {
super.show(`arg = ${arg}, x = ${x}`);
};
inner();
};
outer(42);
}
}
new Child().method("arg"); …
Run Code Online (Sandbox Code Playgroud)