是否可以在 CosmosDB (DocumentDB) 存储过程 API 调用中使用 JavaScript Promise 而不是常规回调?一种用法是实现分页。
例如
token = getToken();
doSomething(token);
//....
function getToken(....) {
//...
collection.queryDocuments(link, query, queryOptions, function(error, documents, responseOptions) {
return responseOptions.continuation;
});
}
不起作用,因为令牌在回调中返回,并且执行继续。您能否举例说明如何实现这一点?
Cosmos DB 文档中引用的 ECMAScript 版本支持 async/await 和 Promises。我可以在我的存储过程中使用这两个。
这是一个返回进行参数化文档查询的承诺的函数:
function queryDocumentsAsync(sql, parameters, options) {
const querySpec = {
query: sql,
parameters: parameters
};
return new Promise((resolve, reject)=>{
let isAccepted = __.queryDocuments(__.getSelfLink(), querySpec, options || {}, (err, feed, options) => {
if(err) reject(err);
resolve({
feed: feed,
options: options
});
});
if(!isAccepted) throw "Query was not accepted.";
});
}
不过,我发现使用这种方法强制回滚存在一些限制。如果你抛出一个错误,它就会被承诺链吞没并且永远不会出去。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)