[英]How to pass a function as parameter to Promise in TypeScript?
嘗試編寫用於異步DynamoDB調用的包裝器類時,我嘗試將所有return語句包裝為帶有函數調用的方式失敗:
function composePromise(method: (params: any, callback: (err, res) => void) => void, params: any): Promise<any> {
return new Promise<any>((resolve, reject) =>
method(params, (err, res) => {
if (err) reject(err);
else resolve(res);
})
);
}
create(params: any): Promise<any> {
return composePromise(this._db.put, params);
}
這很奇怪,因為我在不做任何更改的情況下移動了create
的諾言之后,它就起作用了。
create(params: any): Promise<any> {
return new Promise<any>((resolve, reject) =>
this._db.put(params, (err, res) => {
if (err) reject(err);
else resolve(res);
})
);
}
因此,我猜測這可能是一些關閉問題,但無法弄清楚原因。 有人可以幫我嗎?
我認為this._db.put
可能是在this._db
聲明的某些其他函數的快捷方式,如果是這樣,則該方法可能正在使用this
方法,而這就是失敗的地方。
您應該將正確的上下文綁定到該函數
create(params: any): Promise<any> {
return composePromise(this._db.put.bind(this._db), params);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.