Return 异步函数的类型
Return type for asynchronous function
我有这段代码,它是 async/await 在执行 ajax 调用时的简单实现
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()
函数的正确 return 类型是什么?
在代码中它 return 是一个承诺,但是当使用 await
关键字调用函数时,它 return 是一个基本数据类型(字符串|空)。
您不需要 Promise
中的 fetch
,因为 fetch
return 是一个承诺。另外 return 类型的异步函数或方法必须是全局 Promise 类型。所以把这里的return改成了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);
我有这段代码,它是 async/await 在执行 ajax 调用时的简单实现
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()
函数的正确 return 类型是什么?
在代码中它 return 是一个承诺,但是当使用 await
关键字调用函数时,它 return 是一个基本数据类型(字符串|空)。
您不需要 Promise
中的 fetch
,因为 fetch
return 是一个承诺。另外 return 类型的异步函数或方法必须是全局 Promise 类型。所以把这里的return改成了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);