91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用nodeAPI時遇到過異步問題如何解決

發布時間:2023-01-30 09:15:07 來源:億速云 閱讀:121 作者:iii 欄目:開發技術

這篇文章主要講解了“使用nodeAPI時遇到過異步問題如何解決”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“使用nodeAPI時遇到過異步問題如何解決”吧!

問題

閑逛技術群時常常看到群友遇到異步問題, 這里就最近看到的問題做個解答:

問題大致是這樣:

下面這段代碼, 是希望輸出456的, 但實際上卻輸出了[], 因為readFile的回調會等到文件讀取完成才會執行, readFile不會阻塞代碼運行, 因此return demo會先執行, 此時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提供回調函數來執行讀完文件后的操作, 我們同樣可以提供回調函數來執行readFile結束后的操作:

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 ]
  • 現代JS編程似乎更傾向于Promise風格, 同時我們結合async/await可以進一步簡化代碼

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

這里我們創建了一個Promise, 在readFile的回調函數執行時我們resolve它, 這時Promise才算結束

  • 我們還可以之間讓readFileFn返回一個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))

感謝各位的閱讀,以上就是“使用nodeAPI時遇到過異步問題如何解決”的內容了,經過本文的學習后,相信大家對使用nodeAPI時遇到過異步問題如何解決這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

德化县| 墨脱县| 河西区| 平阴县| 乌审旗| 山阳县| 宁城县| 塘沽区| 南开区| 景洪市| 淳安县| 视频| 平乐县| 宁陵县| 泊头市| 额敏县| 普兰县| 江山市| 庆阳市| 房山区| 宿迁市| 寿宁县| 招远市| 青阳县| 余江县| 永康市| 信丰县| 佳木斯市| 洪泽县| 大城县| 宁武县| 平谷区| 荔波县| 镇雄县| 嘉禾县| 西华县| 保德县| 伊吾县| 通城县| 宁城县| 桂平市|