我有這段代碼,它是在進行 ajax 呼叫時的 async/await 的簡單實作
export const getExternalResource = async (): Promise|String|null => {
return new Promise(async (resolve, reject) =>{
const response = await fetch(url);
const json = response.json();
if(json) {
resolve(json);
} else {
resolve(null)
}
});
};
/**
* @var resource will be null|string
*/
const resource = await getExternalResource();
我的問題是getExternalResource()函式的正確回傳型別是什么?
await在代碼中它回傳一個promise,但是當使用關鍵字呼叫函式時,它回傳一個基本資料型別(字串|空)。
uj5u.com熱心網友回復:
你不需要一個fetchinside aPromise因為fetch回傳一個承諾。異步函式或方法的回傳型別也必須是全域 Promise 型別。所以將這里的回傳型別改為Promise<any>. 您可以替換any為匹配的型別
export const getExternalResource = async(url: string): Promise<any> => {
return await fetch(url).then(response => response.json());
};
const resource = getExternalResource('url').then(d=>d);
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/432443.html
標籤:javascript 异步 异步等待 承诺 流动
