我编写的代码看起来像:
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
构造函数反模式 ",这个代码有什么不好,为什么这被称为 …
我不能声明函数,它返回对Derivable 的承诺。原因如下:
interface Some {
then(callback);
}
// Error: the return type of an async function must either be a valid promise or must not contain a callable 'then' member.
async function foo(): Promise<Some> {
return null;
}
Run Code Online (Sandbox Code Playgroud)
这是打字稿中的错误吗?是否有任何解决方法?因此我不能使用 async/await。
promise ×2
async-await ×1
asynchronous ×1
bluebird ×1
es6-promise ×1
javascript ×1
q ×1
typescript ×1