javascript - Node.js:有哪些技术可以编写干净、简单的回调代码?

标签 javascript node.js

node.js 代码以变成回调意大利面条而闻名。

在 node.js 中克服这个问题并编写干净、不复杂、易于理解的回调代码的最佳技术是什么?

最佳答案

看看 Promise:http://promises-aplus.github.io/promises-spec/

这是一个旨在解决这个问题的开放标准。

我正在使用 Node 模块“q”,它实现了这个标准:https://github.com/kriskowal/q

简单用例:

var Q = require('q');

例如我们有这样的方法:

var foo = function(id) {
  var qdef = Q.defer();

  Model.find(id).success(function(result) {
    qdef.resolve(result);
  });

  return (qdef.promise);
}

然后我们可以通过 .then() 方法链接 Promise:

foo(<any-id>)
.then(function(result) {
  // another promise
})
.then(function() {
  // so on
});

也可以从以下值创建 promise :

Q([]).then(function(val) { val.push('foo') });

还有更多,请参阅文档。

另见:

关于javascript - Node.js:有哪些技术可以编写干净、简单的回调代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5265743/

相关文章:

javascript - 使用 jquery 从服务器上的文本文件中读取

angularjs - 如何限制对 Web 根目录内目录的访问?

angularjs - 快速重定向将页面作为数据发送到 Angular $http 的成功而不是重定向到页面

node.js - Pencilblue - 用于获取所有呈现文章的列表的 Web 服务

javascript - 如何在 node.js 中解压缩 .gz 字符串

javascript - 使用 INPUT 标签的 VALUE 属性(及其值)读取 HTML 表单的 innerHTML

javascript - 古腾堡编辑器在 JS 中检查特定 block 是否处于事件状态

javascript - 将 Google 联系人 ID 转换为十六进制以在 URL 中使用

javascript - double ** 在导入中做什么?

javascript - 无法在范围之外访问函数结果