0

我正在研究 Couch db 列表视图。输出应该是一个 json 对象,其结构适合客户端。

我目前正在从发送到视图函数的值的不同元素中创建一个复合字符串。它基本上所做的是将子字符串添加到结果字符串中,该结果字符串稍后在函数完成时返回。这就是现在的工作。

但是列表视图也有 send() 函数,它将一个值发送到输出,而不结束列表函数本身。

我看到的是解决同一问题的两种方法,两者都可以提供完全相同的输出。

  1. 累积所有预期的输出并在最后返回。
  2. 使用 send() 并在整个过程完成之前将每个子字符串发送到输出。

我不知道沙发内部如何处理这两个。有没有首选更有效的方法?在这种情况下,这是什么原因?

4

1 回答 1

0

官方文档说你应该使用下面的代码模板

function(head, req) {
  var row;
  start({
    "headers": {
      "Content-Type": "text/html"
     }
  });
  while(row = getRow()) {
    send(row.value);
  }
}

然而,这并不总是有意义的。例如,如果您计算 MD5 总和,则在计算完成后返回它会更舒服。

所以你必须每次都做出决定。

于 2013-11-04T16:41:16.287 回答