栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Node.js异步库比较-Q与异步

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Node.js异步库比较-Q与异步

这两个库都不错。我发现它们有不同的用途,可以串联使用。

Q为开发人员提供了Promise对象,这些对象是价值的未来表示形式。对于时间旅行很有用。

异步为开发人员提供了异步版本的控制结构和聚合操作。

一个尝试实施linter的示例显示了库之间的潜在统一性:

function lint(files, callback) {    // Function which returns a promise.    var getMerged = merger('.jslintrc'),        // Result objects to invoke callback with.        results = [];    async.each(files, function (file, callback) {        fs.exists(file, function (exists) { // Future representation of the file's contents. var contentsPromise,     // Future representation of JSLINT options from .jslintrc files.     optionPromise; if (!exists) {     callback();     return; } contentsPromise = q.nfcall(fs.readFile, file, 'utf8'); optionPromise = getMerged(path.dirname(file)); // Parallelize IO operations. q.all([contentsPromise, optionPromise])     .spread(function (contents, option) {         var success = JSLINT(contents, option),  errors,  fileResults;         if (!success) {  errors = JSLINT.data().errors;  fileResults = errors.reduce(function (soFar, error) {      if (error === null) {          return soFar;      }      return soFar.concat({          file: file,          error: error      });  }, []);  results = results.concat(fileResults);         }         process.nextTick(callback);     })     .catch(function (error) {         process.nextTick(function () {  callback(error);         });     })     .done();        });    }, function (error) {        results = results.sort(function (a, b) { return a.file.charCodeAt(0) - b.file.charCodeAt(0);        });        callback(error, results);    });}

我想对每个文件做一些潜在的阻塞。因此

async.each
是显而易见的选择。我可以并行化 相关的 操作 每一次迭代
q.all
和它们是否适用于2个或多个文件重用我的选项值。

在此,Async和Q都会影响程序的控制流程,并且Q表示将来某个时候解析为文件内容的值。这些库可以很好地协同工作。一个人不需要“选择一个”。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/436610.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号