記錄知識點:
最近遇到一個問題,已經解決。
問題大致如:
1.一個H5頁面展示,需要等待多個接口都執行后,才能將其顯示。
2.nodejs 拉取一個服務器中多個文件,並上傳到另一個服務器中。
最普通的方式:
第一個問題:先觸發一個接口,然后在其回調函數中執行下一個接口,依次類推,當所有接口執行完后,展示頁面。
第二個問題:先一條條的拉取文件,然后在一條條的上傳到服務器。
問題:javascript語言的一特點:單線程。那么有某有辦法讓其同時執行,易維護呢?
博主這么解決的:
//舉例一下,第二個問題解決方式
//下載文件方法
async downLoadFile(taskid){
const resp = await http.... //拉取文件
return await this.uploadFile(resp)
}
//上傳文件方法
async uploadFile(result){
return await ... //上傳到服務器
}
//開始
async start(){
//定義一個任務列表,n條文件需要拉取並上傳。
const task = [1,2,3,...,n];
const asynctask = [];//需要處理的任務
const result = []; //處理結果
task.forEach((item)=>{
asynctask.push(this.downLoadFile(item))
})
await Promise.all(asynctask).then((values)=>{
values.forEach((item)=>{
result.push(item);
})
})
return result;
}
//啟動
await this.start();
如有疑問或更好的解決方式,歡迎各位巨佬留言指正。