當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Node.js util.promisify()用法及代碼示例


util.promisify()方法在Node.js標準庫的實用程序模塊中定義。它本質上用於轉換使用回調函數返回響應的方法,以在promise對象中返回響應。通常,由於回調嵌套或回調地獄,很快使用回調就變得非常困難。組織或格式化我們的代碼變得非常困難,以便其他開發人員如果使用該代碼,就可以輕鬆理解它。另一方麵,處理promise非常容易,因為嵌套promise也以線性樣式操作,即promise鏈接。 util.promisify()方法為我們完成了此任務,並使該方法可以按承諾運行。

用法:

util.promisify(func)

參數:此方法接受單個參數func,該函數包含基於回調的函數。

返回值:此方法返回基於promise的函數。

範例1:



// Node.js program to illustrate  
// util.promisify() methods 
  
// Importing Utilities module 
const util = require('util') 
  
// Importing File System module 
const fs = require('fs') 
  
// Use promisify to convert callback 
// based method fs.readdir to  
// promise based method 
const readdir = util.promisify(fs.readdir) 
  
readdir('process.cwd()') 
  .then(files => { 
    console.log(files) 
  }) 
  .catch(err => { 
    console.log(err) 
  })

輸出:

[Error:ENOENT:no such file or directory, 
scandir 'C:\Users\bhudk\Desktop\nodec\process.cwd()'] {
  errno:-4058,
  code:'ENOENT',
  syscall:'scandir',
  path:'C:\\Users\\bhudk\\Desktop\\nodec\\process.cwd()'
}

範例2:

// Node.js program to illustrate  
// util.promisify() methods 
  
// Since promisify function  
// returns promise version  
// of a function, it can also 
// operate using async and await 
   
// Importing Utilities module 
const util = require('util') 
   
// Importing File System module 
const fs = require('fs') 
   
// Use promisify to convert callback 
// based method fs.readdir to  
// promise based method 
const readdir = util.promisify(fs.readdir) 
   
const readFiles = async (path) => { 
    const files = await readdir(path) 
    console.log(files) 
  } 
   
  readFiles(process.cwd()).catch(err => { 
    console.log(err) 
  })

輸出:

範例3:

// Node.js program to illustrate  
// util.promisify() methods 
  
// Importing Utilities module 
const util = require('util') 
  
importing File System module 
const fs = require('fs') 
  
// Use promisify to convert  
// callback based methods to  
// promise based methods 
const readdir = util.promisify(fs.readdir) 
const lstat = util.promisify(fs.lstat) 
  
  
const readFiles = async (path) => { 
  const files = await readdir(path) 
  for (let file of files) { 
    const stats = await lstat(file) 
    if (stats.isFile()) { 
      console.log(`${file} -----> File`) 
    } else { 
      console.log(`${file} -----> Folder`) 
    } 
  } 
} 
  
readFiles('process.cwd()').catch(err => { 
  console.log(err) 
})

輸出:

參考:https://nodejs.org/api/util.html#util_util_promisify_original




相關用法


注:本文由純淨天空篩選整理自hunter__js大神的英文原創作品 Node.js | util.promisify() Method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。