ÀÖÓãµç¾º



½ÌÓýÐÐÒµA¹ÉIPOµÚÒ»¹É£¨¹ÉƱ´úÂë 003032£©

È«¹ú×Éѯ/ͶËßÈÈÏߣº400-618-4000

PromiseÊÇÔõÑù¶ÁÈ¡ÎļþÄÚÈݵģ¿

¸üÐÂʱ¼ä:2022Äê11ÔÂ04ÈÕ17ʱ00·Ö À´Ô´:ÀÖÓãµç¾º ä¯ÀÀ´ÎÊý:

ΪÁ˽â¾ö»Øµ÷µØÓüµÄÎÊÌ⣬ES6(ECMAScript 2015)ÖÐÐÂÔöÁË Promise µÄ¸ÅÄPromise ÊÇÒ»¸ö¹¹Ô캯Êý£¬¿ÉÒÔÓÃÀ´´´½¨ Promise µÄʵÀý const p = new Promise()£¬new ³öÀ´µÄ Promise ʵÀý¶ÔÏ󣬴ú±íÒ»¸öÒì²½²Ù×÷¡£

Promise.prototype Éϰüº¬Ò»¸ö .then() ·½·¨£¬ ÿһ´Î new Promise() ¹¹Ô캯ÊýµÃµ½µÄʵÀý¶ÔÏ󣬶¼¿ÉÒÔͨ¹ýÔ­ÐÍÁ´µÄ·½Ê½·ÃÎʵ½ .then() ·½·¨£¬ÀýÈç p.then()¡£

ͬʱ.then() ·½·¨ÓÃÀ´Ô¤ÏÈÖ¸¶¨³É¹¦ºÍʧ°ÜµÄ»Øµ÷º¯Êý

p.then(³É¹¦µÄ»Øµ÷º¯Êý£¬Ê§°ÜµÄ»Øµ÷º¯Êý)

p.then(result => { }, error => { })

µ÷Óà .then() ·½·¨Ê±£¬³É¹¦µÄ»Øµ÷º¯ÊýÊDZØÑ¡µÄ¡¢Ê§°ÜµÄ»Øµ÷º¯ÊýÊÇ¿ÉÑ¡µÄ¡£»ùÓÚÒÔÉϵÄÀíÂÛ£¬ÎÒÃÇÀ´¿´PromiseµÄ³£¼ûÓ÷¨¡£

»ùÓڻص÷º¯Êý°´Ë³Ðò¶ÁÈ¡ÎļþÄÚÈÝ£¬¾ßÌå´úÂëÈçÏ£º

//¶ÁÈ¡Îļþ1.txt
fs.readFile('./files/1.txt', 'utf8', (err1, r1) => {
  if (err1) return console.log(err1.message) //¶ÁÈ¡Îļþ1ʧȡ
  console, log(r1) //¶ÁÈ¡Îļþ 1 ³É¹¦
  //¶ÁÈ¡Îļþ2.txt
  fs.readFile('./files/2.txt', 'utf8', (err2, r2) => { //ʫȡÎļþ 2 ʧ°Ü
    if (err2) return console.log(err2.message)
    console.log(r2£© //¶ÁÈ¡Îļþ 2 ³É¹¦
    //¶ÁÈ¡Îļþ3.txt
    fs.readFile('./files/3.txt', 'utf8', (err3, r3) => {
     if (err3) return console.log(err3.message) //¶ÁÈ¡Îļþ 3ʧ°Ü
      console.log(r3) //¶ÁÈ¡Îļþ 3  ³É¹¦
    })
  })
})

»ùÓÚ then-fs ¶ÁÈ¡ÎļþÄÚÈÝ

ÓÉÓÚ node.js ¹Ù·½ÌṩµÄ fs Ä£¿é½öÖ§³ÖÒԻص÷º¯ÊýµÄ·½Ê½¶ÁÈ¡Îļþ£¬²»Ö§³Ö Promise µÄµ÷Ó÷½Ê½¡£Òò´Ë£¬ÐèÒªÏÈÔËÐÐÈçϵÄÃüÁ°²×° then-fs Õâ¸öµÚÈý·½°ü£¬´Ó¶øÖ§³ÖÎÒÃÇ»ùÓÚ Promise µÄ·½Ê½¶ÁÈ¡ÎļþµÄÄÚÈÝ¡£

npm install then-fs

µ÷ÓÃthen-fsÌṩµÄreadFile()·½·¨£¬¿ÉÒÔÒì²½µØ¶ÁÈ¡ÎļþµÄÄÚÈÝ£¬CµÄ·µ»ØÖµÊÇPromiseµÄʵÀý¶ÔÏó¡£Òò´Ë¿ÉÒÔµ÷ÓÃ.then()·½·¨ÎªÃ¿¸öPromiseÒì²½²Ù×÷Ö¸¶¨³É¹¦ºÍʧ°ÜÖ®ºóµÄ»Øµ÷º¯Êý¡£Ê¾Àý´úÂëÈçÏ£º

then-fs µÄ»ù±¾Ê¹ÓÃ

µ÷Óà then-fs ÌṩµÄ readFile() ·½·¨£¬¿ÉÒÔÒì²½µØ¶ÁÈ¡ÎļþµÄÄÚÈÝ£¬ËüµÄ·µ»ØÖµÊÇ Promise µÄʵÀý¶ÔÏó¡£Òò´Ë¿ÉÒÔµ÷Óà .then() ·½·¨ÎªÃ¿¸ö Promise Òì²½²Ù×÷Ö¸¶¨³É¹¦ºÍʧ°ÜÖ®ºóµÄ»Øµ÷º¯Êý¡£Ê¾Àý´úÂëÈçÏ£º

/¡ï¡ï
*»ùÓÚPromiseµÄ·½Ê½¶ÁÈ¡Îļþ
*/
impoik: thenFs from 'then-fs'
//×¢Ò⣺.then£¨£©ÖеÄʧ°Ü»Øµ÷ÊÇ¿ÉÑ¡µÄ£¬¿ÉÒÔ±»Ê¡ÂÔ
thenFs.readFile('./files/1.txt','utf8').then(r1=>{console.log(r1)},err1 =>{console.log(err1.message)})
thenFs.readFile('./files/2.txt','utf8').then(r2 =>{console.log(r2)},err2 =>{console.log(err2.message)})
thenFs.readFile('./files/3.txt','utf8').then(r3 =>{ console.log(r3)},err3 =>{console.log(err3.message)})

×¢Ò⣺ÉÏÊöµÄ´úÂëÎÞ·¨±£Ö¤ÎļþµÄ¶Áȡ˳Ðò£¬ÐèÒª×ö½øÒ»²½µÄ¸Ä½ø!

.then() ·½·¨µÄÌØÐÔ

Èç¹ûÉÏÒ»¸ö .then() ·½·¨Öзµ»ØÁËÒ»¸öÐ嵀 Promise ʵÀý¶ÔÏó£¬Ôò¿ÉÒÔͨ¹ýÏÂÒ»¸ö .then() ¼ÌÐø½øÐд¦Àí¡£Í¨¹ý .then() ·½·¨µÄÁ´Ê½µ÷Ó㬾ͽâ¾öÁ˻ص÷µØÓüµÄÎÊÌâ¡£

»ùÓÚ Promise °´Ë³Ðò¶ÁÈ¡ÎļþµÄÄÚÈÝ

Promise Ö§³ÖÁ´Ê½µ÷Ó㬴ӶøÀ´½â¾ö»Øµ÷µØÓüµÄÎÊÌ⡣ʾÀý´úÂëÈçÏ£º

thenFs.readFile('./files/1.txt'£¬'utf8')// 1.·µ»ØÖµÊÇPromiseµÄʵÀý¶ÔÏó
  .then((r1)=>{// 2.ͨ¹ý.thenΪµÚÒ»¸öPromiseʵÀýÖ¸¶¨³É¹¦Ö®ºóµÄ»Øµ÷º¯Êý
    console.log(r1)
    return thenFs.readFile('./files/2.txt'£¬/utf8')// 3.ÔÚµÚÒ»¸ö.thenÖзµ»ØÒ»¸öеÄPromiseʵÀý¶ÔÏó
  })
  .then((r2)=>{//4.¼ÌÐøµ÷ÓÃ.then£¬ÎªÉÏÒ»¸ö.then µÄ·µ»ØÖµ(еÄPromise ʵÀý£©Ö¸¶¨³É¹¦Ö®ºóµÄ»Øµ÷º¯Êý
    console.log(r2)
    return thenFs.readFile('./files/3.txt','utf8')// 5.ÔÚµÚ¶þ¸ö.thenÖÐÔÙ·µ»ØÒ»¸öеÄPromiseʵÀý¶ÔÏó
  })
  .then((r3)=>{// 6.¼ÌÐøµ÷ÓÃ.then,ΪÉÏÒ»¸ö.then µÄ·µ»ØÖµ£¨ÐµÄPromiseʵÀý£©Ö¸¶¨³É¹¦Ö®ºóµÄ»Øµ÷º¯Êý
    console.log(r3)
  })

ͨ¹ý .catch ²¶»ñ´íÎó

ÔÚ Promise µÄÁ´Ê½²Ù×÷ÖÐÈç¹û·¢ÉúÁË´íÎ󣬿ÉÒÔʹÓà Promise.prototype.catch ·½·¨½øÐв¶»ñºÍ´¦Àí£º

thenFs.readFile('./files/11.txt'£¬'utf8'£©//Îļþ²»´æÔÚµ¼Ö¶Áȡʧ°Ü£¬ºóÃæµÄ3¸ö.then ¶¼²»Ö´ÐÐ
  .then(r1 =>{
    console.log(r1)
    return thenFs.readFile('./files/2.txt','utf8')
  })
  .then(r2=> {
    console.log(r2)
    return thenFs.readFile('./files/3.txt', 'utf8')
  })
  .then(r3 =>(
    console.log(r3)
  })
  .catch(err =>{//²¶»ñµÚ1Ðз¢ÉúµÄ´íÎ󣬲¢Êä³ö´íÎóµÄÏûÏ¢
    console.log(err.message)
  })

Promise.all() ·½·¨

Promise.all() ·½·¨»á·¢Æð²¢ÐÐµÄ Promise Òì²½²Ù×÷£¬µÈËùÓеÄÒì²½²Ù×÷È«²¿½áÊøºó²Å»áÖ´ÐÐÏÂÒ»²½µÄ .then²Ù×÷(µÈ´ý»úÖÆ)¡£Ê¾Àý´úÂëÈçÏ£º

//1.¶¨ÒåÒ»¸öÊý×飬´æ·Å3¸ö¶ÁÎļþµÄÒì²½²Ù×÷
const promiseArr = [
  thets.readFile('./files/11.txt','utf8').
  thenFs.readFile('./files/2.txt','utf8'),
  thenFs.readFile('./files/3.txt','utf8'),
]
// 2.½« PromiseµÄÊý×飬×÷ΪPromise.all(£©µÄ²ÎÊý
Promise.all(promiseArr)
  .then(([r1£¬r2£¬r3]£©=>{//2.1ËùÓÐÎļþ¶ÁÈ¡³É¹¦£¨µÈ´ý»úÖÆ£©
    console.log(r1, r2, r3)
  })
.catch(err =>{// 2.2²¶»ñ PromiseÒì²½²Ù×÷ÖеĴíÎó
    console.log(err.message)
  })

×¢Ò⣺Êý×éÖÐ Promise ʵÀýµÄ˳Ðò£¬¾ÍÊÇ×îÖÕ½á¹ûµÄ˳Ðò!

Promise.race() ·½·¨

Promise.race() ·½·¨»á·¢Æð²¢ÐÐµÄ Promise Òì²½²Ù×÷£¬Ö»ÒªÈκÎÒ»¸öÒì²½²Ù×÷Íê³É£¬¾ÍÁ¢¼´Ö´ÐÐÏÂÒ»²½µÄ .then ²Ù×÷(ÈüÅÜ»úÖÆ)¡£Ê¾Àý´úÂëÈçÏ£º

//1.¶¨ÒåÒ»¸öÊý×飬´æ·Å3¸ö¶ÁÎļþµÄÒì²½²Ù×÷
const promiseArr =[
  thenFs.readFile('./files/1.txt', 'utf8'),
  thenFs.readFile('./files/2.txt', 'utf8').
  thenFs.readFile('./files/3.txt', 'utf8').
]
// 2.½« Promise µÄÊý×飬×÷Ϊ Promise.race()µÄ²ÎÊý
Pronise.race(promiseArr)
  .then((result)=>{//2.1Ö»ÒªÈκÎÒ»¸öÒì²½²Ù×÷Íê³É£¬¾ÍÁ¢¼´Ö´Ðгɹ¦µÄ»Øµ÷º¯Êý£¨ÈüÅÜ»úÖÆ£©
    console.log(result)
  })
  .catch(err =>{// 2.2²¶»ñPromise Òì²½²Ù×÷ÖеĴíÎó
    console.log(err.message)
  })

0 ·ÖÏíµ½£º
ºÍÎÒÃÇÔÚÏß½»Ì¸£¡
¡¾ÍøÕ¾µØÍ¼¡¿¡¾sitemap¡¿