0
當嘗試寫異步DynamoDB通話功能的包裝類,我失敗的嘗試來包裝所有的return語句以函數調用爲:如何將函數作爲參數傳遞給TypeScript中的Promise?
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);
})
);
}
所以我猜測這可能是一些封閉的問題,但無法弄清楚爲什麼。任何人都可以幫助我嗎?
謝謝你這麼多,它的工作原理!這個'bind'函數是否會在它的閉包中保留this,以便稍後調用此函數時可以找到它? –
抱歉,但我不明白你的問題,你指的是哪一種背景? bind函數在不修改this._db.put的情況下創建一個包裝函數 –