我對打字稿很陌生,我有一個功能可以獲取用戶的蒸汽庫存并將其存盤在“庫存”引數中,但是當我想回傳它時,它將回傳未定義:
function getUserInv(steamid) {
manager.getUserInventoryContents(steamid, 440, 2, true, function(err, inventory) {
if(err) {
console.log(err);
} else {
return inventory
};
});
};
console.log(getUserInv('<my steamid>')) //returns undefined
我怎樣才能做到這樣當我像上面那樣呼叫它時,它會回傳庫存?任何幫助都會得到幫助:-)
uj5u.com熱心網友回復:
你可以把它包裝成Promise這樣
function getUserInv(steamid) {
return new Promise((resolve, reject) => {
manager.getUserInventoryContents(steamid, 440, 2, true, function(err, inventory) {
if(err) {
reject(err);
} else {
resolve(inventory)
};
});
}
};
getUserInv('<my steamid>').then(console.log)
uj5u.com熱心網友回復:
因為這個函式異步回傳一個值,所以你需要回傳一個可以處理異步值的資料型別。
在 JS 中,這稱為promise。您可以通過使用注冊回呼來訪問它們的值.then(),或者在 TypeScript 和其他現代 JS 環境中,您可以使用 niceasync/await語法。
以下是如何從函式創建和回傳 Promise。
function getUserInv(steamid: string): Promise<Inventory> {
return new Promise((resolve, reject) {
manager.getUserInventoryContents(steamid, 440, 2, true, function(err, inventory) {
if(err) {
reject(err);
} else {
resolve(inventory);
};
});
});
}
// Using .then():
getUserInv('<my steamid>').then(inv => console.log(inv));
// Using async/await:
console.log(await getUserInv('<my steamid>'));
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/491739.html
標籤:javascript 打字稿 返回
上一篇:將svg作為字串插入div
