簡體   English   中英

如何在TypeScript中將函數作為參數傳遞給Promise?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM