面试题答案
一键面试在Node.js环境下,可以使用Promise.all
来实现模块的并发加载。以下是实现方法及示例代码:
-
实现方法: 将每个模块的加载操作封装为一个
Promise
,然后使用Promise.all
方法来并行执行这些Promise
,从而实现模块的并发加载。 -
代码示例:
const { promisify } = require('util');
const fs = require('fs');
// 假设这里有两个文件module1.js和module2.js,我们使用fs.readFile来模拟加载模块
const readModule1 = promisify(fs.readFile)('module1.js', 'utf8');
const readModule2 = promisify(fs.readFile)('module2.js', 'utf8');
Promise.all([readModule1, readModule2])
.then(([module1Content, module2Content]) => {
// 这里module1Content和module2Content分别是两个模块的内容
console.log('模块1内容:', module1Content);
console.log('模块2内容:', module2Content);
})
.catch((error) => {
console.error('加载模块出错:', error);
});
上述代码中,promisify
将fs.readFile
这个基于回调的函数转化为返回Promise
的函数。Promise.all
接收一个Promise
数组,只有当数组中所有的Promise
都成功时,才会执行then
回调,否则执行catch
回调。这样就实现了模块的并发加载。