@ බර්ගීගේ ප්රතිචාරය මෙන්, නමුත් එක් වෙනසක් සමඟ.
Promise.all
යමෙක් ප්රතික්ෂේප වුවහොත් සියලු පොරොන්දු ප්රතික්ෂේප කරයි.
එබැවින්, පුනරාවර්තනයක් භාවිතා කරන්න.
const readFilesQueue = async (files, index = 0) {
const contents = await fs.readFile(files[index], 'utf8')
console.log(contents)
return files.length <= index
? readFilesQueue(files, ++index)
: files
}
const printFiles async = () => {
const files = await getFilePaths();
const printContents = await readFilesQueue(files)
return printContents
}
printFiles()
පීඑස්
readFilesQueue
පිටත ඇත printFiles
පැත්ත ක්රියාත්මක * විසින් හඳුන්වා හේතුව console.log
, එය, පරීක්ෂණ නිග්රහ කිරීමට වඩා හොඳ වන අතර, හෝ එසේ ඔත්තු, එය අන්තර්ගතය (sidenote) නැවත එම උත්සවයකට ඇති සිසිල් නොවේ.
එමනිසා, කේතය සරලව නිර්මාණය කළ හැක්කේ: “පිරිසිදු” ** ලෙස වෙන් කරන ලද ශ්රිත තුනක් සහ කිසිදු අතුරු ආබාධයක් හඳුන්වා නොදීම, සම්පූර්ණ ලැයිස්තුවම සැකසීම සහ අසමත් වූ අවස්ථා හැසිරවීම සඳහා පහසුවෙන් වෙනස් කළ හැකිය.
const files = await getFilesPath()
const printFile = async (file) => {
const content = await fs.readFile(file, 'utf8')
console.log(content)
}
const readFiles = async = (files, index = 0) => {
await printFile(files[index])
return files.lengh <= index
? readFiles(files, ++index)
: files
}
readFiles(files)
අනාගත සංස්කරණය / වත්මන් තත්වය
Node ඉහළ මට්ටමේ බලා සිටීම සඳහා සහය දක්වයි (මෙයට තවමත් ප්ලගිනයක් නොමැත, සමගිය කොඩි හරහා සක්රීය කළ නොහැක), එය සිසිල් නමුත් එක් ගැටළුවක් විසඳන්නේ නැත (උපායමාර්ගිකව මම වැඩ කරන්නේ LTS අනුවාදවල පමණි). ලිපිගොනු ලබා ගන්නේ කෙසේද?
සංයුතිය භාවිතා කිරීම. කේතය අනුව, මෙය මොඩියුලයක් තුළ ඇති බවට මට හැඟීමක් ඇති කරයි, එබැවින් එය කිරීමට ශ්රිතයක් තිබිය යුතුය. එසේ නොවේ නම්, ඔබ විසින් IIFE භාවිතා කර භූමිකාව කේතය අසමමුහුර්ත ශ්රිතයක් තුළට ඔතා සරල මොඩියුලයක් නිර්මාණය කර ඔබ වෙනුවෙන් සියල්ලම කළ හැකිය, නැතහොත් ඔබට නිවැරදි මාර්ගයෙන් යා හැකිය, සංයුතිය ඇත.
// more complex version with IIFE to a single module
(async (files) => readFiles(await files())(getFilesPath)
අර්ථ නිරූපණය හේතුවෙන් විචල්ය වෙනස්වීම්වල නම සටහන් කරන බව සලකන්න. ඔබ ෆන්ක්ටර් එකක් (වෙනත් ශ්රිතයක් මඟින් ආයාචනය කළ හැකි ශ්රිතයක්) පසු කර යෙදුමේ තර්කනයේ ආරම්භක කොටස අඩංගු මතකය පිළිබඳ දර්ශකයක් ලබා ගනී.
නමුත්, මොඩියුලයක් නොවේ නම් සහ ඔබට තර්කනය අපනයනය කළ යුතුද?
අසංක ශ්රිතයක කාර්යයන් ඔතා.
export const readFilesQueue = async () => {
// ... to code goes here
}
නැතහොත් විචල්යයන්ගේ නම් වෙනස් කරන්න, කුමක් වුවත් ...
*
IO වැනි යෙදුමේ ප්ර stat ප්තිය / හැසිරීම වෙනස් කිරීමට හෝ යෙදුමේ දෝෂ හඳුන්වා දිය හැකි යෙදුමේ ඕනෑම සමෝධානික බලපෑමක් අතුරු by ල වේ.
**
"නිර්මල" මගින්, එය ප්රේරිතයේ පවතින බැවින් එය පිරිසිදු නොවන අතර කේතය පිරිසිදු අනුවාදයකට පරිවර්තනය කළ හැකිය, කොන්සෝල ප්රතිදානය නොමැති විට දත්ත හැසිරවීම් පමණි.
මේ හැරුණු විට, පිරිසිදු වීමට නම්, අතුරු ආබාධ හසුරුවන, දෝෂ ඇතිවිය හැකි මොනාඩ් සමඟ වැඩ කිරීමට ඔබට අවශ්ය වන අතර, එම දෝෂය යෙදුමට වෙන වෙනම සලකයි.
for ... of ...
වැඩ කරන්නේ මන්දැයි ඔබට පැහැදිලි කළ හැකිද ?