最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript詳解使用Promise處理回調(diào)地獄的兩種方法

 更新時間:2022年11月30日 10:59:04   作者:未及545  
這篇文章主要介紹了JavaScript詳解使用Promise處理回調(diào)地獄的兩種方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

一、.then()鏈?zhǔn)秸{(diào)用解決

多層回調(diào)函數(shù)的相互嵌套,就形成了回調(diào)地獄。

缺點:

1.代碼耦合性太強(qiáng),難以維護(hù)。

2.大量冗余的代碼相互嵌套,可讀性比較差。

then-fs的基本使用:

調(diào)用then-fs(終端通過npm install then-fs安裝包)提供的readFile()方法,可以異步的讀取文件的內(nèi)容,它的返回值是Promise的實例對象,因此可以調(diào)用.then()方法為每個Promise異步操作指定成功和失敗之后的回調(diào)函數(shù)。

import thenFs from "then-fs"
thenFs.readFile("./fis/1.txt","utf8").then(r1=>{
  console.log(r1);
})
thenFs.readFile("./fis/2.txt","utf8").then(r2=>{
  console.log(r2);
})
thenFs.readFile("./fis/3.txt","utf8").then(r3=>{
  console.log(r3);
})

但是會發(fā)現(xiàn)讀取順序是會變化的。

.then()方法的特性:

如果上一個.then()方法中返回了一個新的promise實例對象,則可以通過下一個.then()繼續(xù)進(jìn)行處理,通過鏈?zhǔn)秸{(diào)用的方法,解決地獄回調(diào)問題。

import thenFs from "then-fs"
thenFs.readFile("./fis/1.txt","utf8").then(r1=>{
  console.log(r1);
  return thenFs.readFile("./fis/2.txt","utf8")
}).then(r2=>{
  console.log(r2);
  return thenFs.readFile("./fis/3.txt","utf8")
}).then(r3=>{
  console.log(r3);
})

.catch()方法

import thenFs from "then-fs"
thenFs.readFile("./fis/11.txt","utf8").catch(err=>{
  console.log(err.message);
}).then(r1=>{
  console.log(r1);
  return thenFs.readFile("./fis/2.txt","utf8")
}).then(r2=>{
  console.log(r2);
  return thenFs.readFile("./fis/3.txt","utf8")
}).then(r3=>{
  console.log(r3);
})

.catch()放到最后可以捕獲所有錯誤,但是一旦遇到錯誤,后面的.then()就不在執(zhí)行。

.catch()放到前面,后面的.then()還可以正常執(zhí)行。

二、async await解決

import thenFs from "then-fs"
 async function getFile(){
// 不加await,打印的r1是一個promise實例對象,加await打印的是結(jié)果
const r1=await thenFs.readFile("./fis/1.txt","utf8")
console.log(r1);
const r2=await thenFs.readFile("./fis/2.txt","utf8")
console.log(r2);
const r3=await thenFs.readFile("./fis/3.txt","utf8")
console.log(r3);
 }
 getFile()

注意:

在async方法中,第一個await之前的代碼會同步執(zhí)行,await之后的代碼會異步執(zhí)行

import thenFs from "then-fs"
// 在async方法中,第一個await之前的代碼會同步執(zhí)行,await之后的代碼會異步執(zhí)行
console.log("a");
 async function getFile(){
  console.log("b");
const r1=await thenFs.readFile("./fis/1.txt","utf8")
console.log(r1);
const r2=await thenFs.readFile("./fis/2.txt","utf8")
console.log(r2);
const r3=await thenFs.readFile("./fis/3.txt","utf8")
console.log(r3);
console.log("d");
 }
 getFile()
 console.log("c");

到此這篇關(guān)于JavaScript詳解使用Promise處理回調(diào)地獄的兩種方法的文章就介紹到這了,更多相關(guān)JS Promise回調(diào)地獄內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JavaScript省市區(qū)三級聯(lián)動菜單效果

    JavaScript省市區(qū)三級聯(lián)動菜單效果

    這篇文章主要為大家詳細(xì)介紹了JavaScript省市區(qū)三級聯(lián)動菜單效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • JS使用canvas實現(xiàn)基本的截圖功能

    JS使用canvas實現(xiàn)基本的截圖功能

    這篇文章主要給大家介紹了使用JS中的canvas實現(xiàn)基本的截圖功能,文中有詳細(xì)的實現(xiàn)思路和實現(xiàn)過程,文章通過代碼示例講解的非常詳細(xì),很感興趣的同學(xué)可以參考一下
    2023-08-08
  • es6函數(shù)之嚴(yán)格模式用法實例分析

    es6函數(shù)之嚴(yán)格模式用法實例分析

    這篇文章主要介紹了es6函數(shù)之嚴(yán)格模式用法,結(jié)合實例形式分析了es6函數(shù)嚴(yán)格模式的定義、用法及操作注意事項,需要的朋友可以參考下
    2020-03-03
  • 簡單使用webpack打包文件的實現(xiàn)

    簡單使用webpack打包文件的實現(xiàn)

    這篇文章主要介紹了簡單使用webpack打包文件的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Bootstrap所支持的表單控件實例詳解

    Bootstrap所支持的表單控件實例詳解

    Bootstrap 支持最常見的表單控件,主要是 input、textarea、checkbox、radio 和 select。本文通過實例代碼給大家講解Bootstrap所支持的表單控件,感興趣的朋友一起學(xué)習(xí)吧
    2016-05-05
  • javascript中return,return true,return false三者的用法及區(qū)別

    javascript中return,return true,return false三者的用法及區(qū)別

    這篇文章主要介紹了javascript中return,return true,return false三者的用法及區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2015-11-11
  • javascript常用對話框小集

    javascript常用對話框小集

    對話框,大家對這個詞匯可謂是各有所解,本文有個不錯的例子,里面包含了各種常見對話框的實現(xiàn),感興趣的朋友可以了解下
    2013-09-09
  • 關(guān)于樹形菜單 Checkbox的全選

    關(guān)于樹形菜單 Checkbox的全選

    js樹形菜單全選
    2008-07-07
  • Javascript中的對象和原型(二)

    Javascript中的對象和原型(二)

    這篇文章給大家介紹了js中的對象和原型,從工廠模式,構(gòu)造函數(shù)方面展開話題,介紹的非常詳細(xì),具有參考借鑒價值,需要的朋友可以參考下
    2016-08-08
  • 詳解全棧開發(fā)Vercel數(shù)據(jù)庫存儲服務(wù)

    詳解全棧開發(fā)Vercel數(shù)據(jù)庫存儲服務(wù)

    這篇文章主要為大家介紹了全棧開發(fā)Vercel數(shù)據(jù)庫存儲服務(wù)功能使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05

最新評論

山阳县| 凤台县| 台湾省| 桐柏县| 绵阳市| 阳泉市| 金溪县| 金乡县| 屯昌县| 抚顺县| 乌兰察布市| 温泉县| 凤城市| 大荔县| 民勤县| 密云县| 乌什县| 宁乡县| 铜陵市| 黑河市| 翁牛特旗| 漳州市| 武鸣县| 巴东县| 靖江市| 皮山县| 凤庆县| 康平县| 甘德县| 吉首市| 石柱| 江川县| 广德县| 寿宁县| 巫山县| 望都县| 古蔺县| 黔南| 钟祥市| 慈利县| 罗甸县|