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

使用nodeAPI時(shí)遇到過異步問題解決

 更新時(shí)間:2023年01月28日 16:01:40   作者:舉案  
這篇文章主要為大家介紹了使用nodeAPI時(shí)遇到過異步問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

問題

閑逛技術(shù)群時(shí)常常看到群友遇到異步問題, 這里就最近看到的問題做個(gè)解答:

問題大致是這樣:

下面這段代碼, 是希望輸出456的, 但實(shí)際上卻輸出了[], 因?yàn)閞eadFile的回調(diào)會等到文件讀取完成才會執(zhí)行, readFile不會阻塞代碼運(yùn)行, 因此return demo會先執(zhí)行, 此時(shí)demo值為[].

const fs = require('fs')
const readFileFn = () => {
	let demo = []
  fs.readFile('./config.json', async function (err, date) {
    Promise.all([Promise.resolve(() => 456)]).then(res => {
      demo = res
    })
  })
  return demo
}
console.log('end', readFileFn()) // 要輸出456

很典型的異步問題, 解決方法也由不少, 我們來探討一下:

  • 既然readFile提供回調(diào)函數(shù)來執(zhí)行讀完文件后的操作, 我們同樣可以提供回調(diào)函數(shù)來執(zhí)行readFile結(jié)束后的操作:
const fs = require('fs')
const readFileFn = (callback) => {
  fs.readFile('./config.json', async function (err, date) {
    Promise.all([Promise.resolve(456)]).then(res => {
      callback(res)
    })
  })
}
readFileFn(data => console.log(data)) // [ 456 ]
  • 現(xiàn)代JS編程似乎更傾向于Promise風(fēng)格, 同時(shí)我們結(jié)合async/await可以進(jìn)一步簡化代碼
const fs = require('fs')
const readFileFn = async () => {
  const [result] = await Promise.all([
    new Promise(resolve => fs.readFile('./config.json', (err, data) => resolve(456))),
  ])
  return result
}
readFileFn().then(res => console.log(res)) // 456

這里我們創(chuàng)建了一個(gè)Promise, 在readFile的回調(diào)函數(shù)執(zhí)行時(shí)我們r(jià)esolve它, 這時(shí)Promise才算結(jié)束

  • 我們還可以之間讓readFileFn返回一個(gè)Promise
const readFileFn = () => {
  return new Promise(resolve => {
    fs.readFile('./config.json', async function (err, date) {
      Promise.all([Promise.resolve(456)]).then(res => {
        resolve(res)
      })
    })
  })
}
readFileFn().then(console.log) // [456]
// readFileFn().then(res => console.log(res))

總結(jié)

在node中有很多類似于readFile的API, 他們采用回調(diào)函數(shù)的方式實(shí)現(xiàn)異步, 因?yàn)樵谝郧? 回調(diào)函數(shù)被用來實(shí)現(xiàn)異步, 之后出現(xiàn)了諸如Promise, async/await這樣的異步方案,現(xiàn)代的JS編程,更加鼓勵(lì)使用新方案,他們完全可以和以前的回調(diào)函數(shù)方案兼容。

以上就是使用nodeAPI時(shí)遇到過異步問題解決的詳細(xì)內(nèi)容,更多關(guān)于nodeAPI異步問題的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 使用nodejs寫接口的詳細(xì)步驟

    使用nodejs寫接口的詳細(xì)步驟

    這篇文章主要給大家介紹了關(guān)于使用nodejs寫接口的詳細(xì)步驟,在Node.js中接口可以采用多種形式,包括函數(shù)接口、對象接口和事件接口等,需要的朋友可以參考下
    2023-10-10
  • PostgreSQL Node.js實(shí)現(xiàn)函數(shù)計(jì)算方法示例

    PostgreSQL Node.js實(shí)現(xiàn)函數(shù)計(jì)算方法示例

    這篇文章主要給大家介紹了關(guān)于PostgreSQL Node.js實(shí)現(xiàn)函數(shù)計(jì)算的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • npm?install總是卡住不動問題的解決辦法

    npm?install總是卡住不動問題的解決辦法

    在我們安裝完Node.js之后,需要使用npm命令來安裝一些工具,下面這篇文章主要給大家介紹了關(guān)于npm?install總是卡住不動問題的解決辦法,需要的朋友可以參考下
    2022-05-05
  • 關(guān)于npm源查詢與切換方式

    關(guān)于npm源查詢與切換方式

    這篇文章主要介紹了關(guān)于npm源查詢與切換方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • Nodejs 和 Electron ubuntu下快速安裝過程

    Nodejs 和 Electron ubuntu下快速安裝過程

    本文較為詳細(xì)的給大家介紹了Nodejs 和 Electron ubuntu下快速安裝過程,非常不錯(cuò),具有一定的參考借鑒價(jià)值,感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧
    2018-05-05
  • node將Excel數(shù)據(jù)轉(zhuǎn)為JSON的示例代碼

    node將Excel數(shù)據(jù)轉(zhuǎn)為JSON的示例代碼

    平時(shí)工作中我們基本都會接觸到excel數(shù)據(jù)表,但是在代碼中使用和處理數(shù)據(jù)的時(shí)候通常都要先將其轉(zhuǎn)為json格式數(shù)據(jù),json格式的數(shù)據(jù)可以更加方便我們進(jìn)行處理,那么我們要怎么將Excel數(shù)據(jù)轉(zhuǎn)為JSON數(shù)據(jù)呢,接下來本文給大家詳細(xì)介紹一下
    2024-11-11
  • 詳解通過源碼解析Node.js中cluster模塊的主要功能實(shí)現(xiàn)

    詳解通過源碼解析Node.js中cluster模塊的主要功能實(shí)現(xiàn)

    這篇文章主要介紹了詳解通過源碼解析Node.js中cluster模塊的主要功能實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-05-05
  • node+vue實(shí)現(xiàn)用戶注冊和頭像上傳的實(shí)例代碼

    node+vue實(shí)現(xiàn)用戶注冊和頭像上傳的實(shí)例代碼

    本篇文章主要介紹了node+vue實(shí)現(xiàn)用戶注冊和頭像上傳的實(shí)例代碼,具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-07-07
  • nodejs管理工具nvm安裝過程詳解

    nodejs管理工具nvm安裝過程詳解

    Node版本管理器--nvm,可以運(yùn)行在多種操作系統(tǒng)上。nvm for windows 是使用go語言編寫的軟件。 我電腦使用的是Windows操作系統(tǒng),所以我要記錄下在此操作系統(tǒng)上nvm的安裝和使用
    2021-06-06
  • Node.js數(shù)據(jù)庫鉤子的使用

    Node.js數(shù)據(jù)庫鉤子的使用

    本文主要介紹了Node.js數(shù)據(jù)庫鉤子的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05

最新評論

皋兰县| 增城市| 铜鼓县| 五莲县| 南丹县| 天台县| 大化| 班戈县| 攀枝花市| 沾化县| 灌南县| 平乐县| 雅安市| 乡宁县| 龙海市| 富民县| 时尚| 长兴县| 永胜县| 芦溪县| 桂阳县| 张家界市| 福海县| 关岭| 北川| 手机| 且末县| 甘肃省| 陵水| 永泰县| 温州市| 夏河县| 博湖县| 富宁县| 梅河口市| 鸡西市| 京山县| 东乌| 无棣县| 普定县| 鄂伦春自治旗|