大概思路是这样的:
-
fetch.js
-> 请求函数的封装 -
index.js
-> 调用fetch.js中导入的函数,对其返回值进行处理,再导出 -
result.js
-> 对index.js中的导出进行最后的处理
问题就在于,index.js
中调用的是异步函数,如果把它放在一个内部是async函数的IIFE中执行,那么能顺利得到返回值并处理,但是不能把得到的结果导出...(因为被包在里面不能export default)
想请问一下大佬们有什么办法能把异步流程的结果释放到全局中吗...
fetch.js
interface IFetchProps {
(app_key: string, city: string): any;
}
const fetchData: IFetchProps = async (app_key, city) => {
return new Promise((resolve, reject) => {
axios
.get(
`https://api.jisuapi.com/weather/query?appkey=${app_key}&city=${city}`
)
.then((res: any) => {
resolve(res);
});
});
};
(另一种写法)
index.js
(async () => {
const test = await getData(app_key, encodeURI(city));
console.log(test);
// ...一些处理
const data = "ssss";
// 如何导出?
})();
直接
export default
就好了,async 函数的返回值就是 Promise 实例。即:另外,你的
fetchData
写得太荒唐了吧?axois 返回的就是 Promise 实例,结果你还把它包一层;更莫名其妙的是它本来就是个 asynchronous 函数。先好好读读文档把 Promise 和 async/await 搞懂再说吧。