簡體   English   中英

如何在Node.js中異步導出模塊

[英]How to export module asynchronously in nodejs

我無法導出以異步方式自己編寫的模塊。

const glob = require('glob');

var confFiles;

glob("conf/**/*.conf", function (er, files) {
    confFiles = files;
});

module.exports = new Promise(function(resolve, reject) {
    resolve(confFiles);
});

這是模塊本身,我想訪問其他文件中的confFiles ,但要點是glob不是異步的,我在尋找解決方法時遇到了麻煩。

解決回調回調時:

module.exports = new Promise(function(resolve, reject) {
  glob("conf/**/*.conf", function (err, files) {
   if(err) reject(err) else resolve(files);
  });
}));

或更短:

 const glob = require("glob");
 const { promisify } = require("util");

module.exports = promisify(glob)("conf/**/*.conf");

我會改為導出load方法:

// conf.js
const glob = require('glob')

module.exports.load = () => new Promise((resolve, reject) => {
  glob('conf/**/*.conf', function (err, files) {
    if (err) return reject(err)

    resolve(files)
  })
})

然后在用戶領域:

// index.js
const conf = require('./conf.js')

conf.load()
  .then(files => {
    console.log(files)
  })

或者,您可以只使用globe.sync而避免完全處理異步代碼:

// conf.js
const glob = require('glob')

module.exports = glob.sync('conf/**/*.conf')

然后在用戶領域:

// index.js
const files = require('./conf.js')
console.log(files)

請記住, globe.sync是一項阻止操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM