javascript - 这是顺序运行代码片段的好方法吗?
问题描述
<script src="./js/id.js"></script>
<script src="./js/fetch.js"></script>
<script src="./js/download.js"></script>
<script src="./js/playback.js"></script>
每个脚本都依赖于前者来完成。
解决方案
这是一个好方法[...]
不,但是如果里面的 javascript 是同步的,它将起作用。当您决定做一些异步fetch.js
的事情(即:download.js
听起来他们会做一些异步的事情)时,它就行不通了。
在每个文件中包装和公开一个异步函数怎么样。
例如,您可以fetch.js
调用一个包装器函数并调用function myFetch(){ ... }
一个download.js
包装器函数function myDownload(){ ... }
,然后简单地使用await
您从每个脚本文件中公开的每个包装器函数。
// fetch.js file
function myFetch(){
return new Promise((resolve)=>{
setTimeout(()=>{
console.log("my Fetch Done");
resolve("myFetch");
}, 500);
})
}
// download.js file
function myDownload(){
return new Promise((resolve)=>{
setTimeout(()=>{
console.log("My download done");
resolve("myDownload");
}, 100);
})
}
// main.js file
async function myMain(){
// "synchronous"
const res1 = await myFetch();
const res2 = await myDownload();
console.log('final log', res1, res2);
}
myMain();
推荐阅读
- html - 在导航栏上实现中心垂直标志品牌
- reactjs - 如何告诉 useEffect 等待数据
- python - 如何在 MySQL DB 和 Python 列表中查找常见行数和位置
- excel - 如何使用网络抓取从我的网站注销?
- php - 使用 codeIgniter 使数据不会从文件字段中消失
- r - 如何从 geom_boxplot (ggplot2) 中的图例中删除 alpha?
- authentication - Flutter 持久登录
- linux - xargs 中的转义字符'
- python - 将时间截断为 timedelta
- python-3.x - 我无法在 python 3.x 中导入 docx 模块