7.JavaScript-Promise的並行和串列

来源:https://www.cnblogs.com/xiaole9924/archive/2019/11/12/11842180.html
-Advertisement-
Play Games

Promise 並行 Promise.all是所有的Promise執行完畢後(reject|resolve)返回一個Promise對象。 最近在開發一個項目中,需要等介面拿到全部數據後刷新頁面,取消loding效果 1 // 項目中請求介面 2 function getShowProject(res ...


Promise 並行

Promise.all是所有的Promise執行完畢後(reject|resolve)返回一個Promise對象。

最近在開發一個項目中,需要等介面拿到全部數據後刷新頁面,取消loding效果

 1  // 項目中請求介面
 2 function getShowProject(resolve, reject) {
 3     $.ajax({
 4       url: `${api}/rrz/member/showProjectById`,
 5       type: 'get',
 6       data: { appId: appId },
 7       success: function (res) {
 8         if (res.result == 'success') {
 9           gather['listBy'] = res.data;
10           resolve();
11         }
12       }
13     });
14   }
15   function getProjectPic(resolve, reject) {
16    ...
17   }
18   function projectRelation(resolve, reject) {
19    ...
20   }
21   function queryProjectDynamicS(resolve, reject) {
22    ...
23   }
24   function showProjectLoveValue(resolve, reject) {
25    ...
26   }
27   function getAppProjectDonorComment(resolve, reject) {
28    ...
29   }
30   // 等待介面全部請求完成後  刷新頁面
31   var a1 = new Promise(getShowProject);
32   var a2 = new Promise(getProjectPic);
33   var a3 = new Promise(projectRelation);
34   var a4 = new Promise(queryProjectDynamicS);
35   var a5 = new Promise(showProjectLoveValue);
36   var a6 = new Promise(getAppProjectDonorComment);
37   Promise.all([a1, a2, a2, a3, a4, a5, a6]).then(function () {
38     info = { data: gather }
39     getDetail();
40     console.log('loading效果圖消失');
41   })

 

Promise 串列

在項目的實際操作中會用到串列調用方法的情況,實現非同步執行,例如
有三個方法,方法一、方法二、方法三,需要執行完方法一之後執行方法二,執行完方法二之後執行方法三,可以用Promise實現,簡單的模擬做法如下:

function one(){
    console.log(11111);
}

function two(){
    console.log(22222);
}

function three(){
    console.log(33333);
}
function fiveP(func){
    return new Promise(function(resolve, reject) {
        func();
        resolve();
    });
}

p.then(fiveP(one))
.then(fiveP(three))
.then(fiveP(two))
.then(function(result) {
    console.log('最後執行' + result);
});
// 執行結果 
// 1111
// 3333
// 2222
// 最後執行

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Hello大家好,今天小主開啟了自己的博客,還請多多瀏覽和分享 ...
  • 解構的作用:簡化書寫長度,提升開發效率。 解構對象 在開發中我們常用到使用ajax請求數據,並且把數據渲染到頁面上。可能這個數據返回的對象或數組。例如返回一個obj{name:'zwq',age:18,sex:woman}而我們獲取裡面的值保存在變數里會用 var name = obj.name,v ...
  • [TOC] 前端 什麼是前端 任何與用戶直接打交道的操作界面 都可以稱之為前端 eg:電腦界面 手機界面 平板界面 什麼是後端 真正的幕後操作者 web服務的本質 請求 響應 瀏覽器輸入網址 回車發生了哪些事 1.朝著指定的伺服器地址發送請求 2.服務端接收請求 並處理 3.返回相應的響應 4.瀏覽 ...
  • 1.先用vue-cli3創建一個項目 2.安裝element模塊 全局安裝 npm i element-ui -S 3在main.js引入模塊 import ElementUI from 'element-ui'; import 'element-ui/lib/theme-chalk/index.c ...
  • 如何用javascript獲取input輸入框中的值,js/jq通過name或id獲取輸入框value值 ...
  • 最近在學習小程式,要把html的代碼轉換成小程式界面,其中就遇到了rem的轉換問題,但小程式不太相容rem,不是不能用rem,而是沒辦法設置根元素的font-size,因為rem是相對於根元素的font-size,而小程式的根元素font-size一直是16px。既然我設置了page{ font-s ...
  • 類似這樣: 引入文件的路徑錯誤 ...
  • 高階函數 高階函數是對其他函數進行操作的函數,可以將它們作為參數或通過返回它們。簡單來說,高階函數是一個函數,它接收函數作為參數或將函數作為輸出返回。 例如Array.prototype.map,Array.prototype.filter並且Array.prototype.reduce是一些高階功 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...