我已经相当粗略地环顾四周,找不到任何关于如何使用node.js中的marklogic模块的查询结果的例子......
大多数示例都会执行结果的console.log(),但是如果我需要查询结果(例如在JSON数组中并稍后使用这些结果,该怎么办?
似乎我在这里缺少一些node.js ascynch东西......
示例:
var marklogic = require('marklogic');
var my = require('./my-connection.js');
var db = marklogic.createDatabaseClient(my.connInfo);
var qb = marklogic.queryBuilder;
db.documents.query(
qb.where(qb.parsedFrom('oslo'))
).result( function(results) {
console.log(JSON.stringify(results, null, 2));
});
// I would like to use the results here
// console.log(JSON.stringify(results, null, 2))
Run Code Online (Sandbox Code Playgroud)
现在的问题是我想在稍后的脚本中使用结果对象.我试过使用.then(),或者将它传递给变量并返回该变量但没有运气.
问候,
雨果
简单回答:您需要从result()回调中继续您的业务逻辑.
更详细地说,您的目标是使用异步计算或请求的结果执行某些操作.由于JS没有本机异步功能(例如线程),因此回调通常用于异步恢复操作.最重要的事情是你不能return得到异步计算或请求的结果,但必须在完成后恢复控制流.定义大量函数有助于使这种代码更易于阅读和理解.
这个例子说明了发生了什么:
process.nextTick(function() {
console.log('second')
})
console.log('first')
Run Code Online (Sandbox Code Playgroud)
first然后second,该程序将记录,因为process.nextTick()异步调用提供给它的回调函数(在事件循环的下一轮).
我如何开始使用Node.js的答案提供了大量资源,以便更好地理解node.js的异步编程.
| 归档时间: |
|
| 查看次数: |
53 次 |
| 最近记录: |