5 javascript asynchronous stored-procedures azure-cosmosdb
是否可以在CosmosDB(DocumentDB)存储过程API调用中使用JavaScript Promise代替常规回调?一种用法是实现分页。
例如
token = getToken();
doSomething(token);
//....
function getToken(....) {
//...
collection.queryDocuments(link, query, queryOptions, function(error, documents, responseOptions) {
return responseOptions.continuation;
});
}
Run Code Online (Sandbox Code Playgroud)
将不起作用,因为令牌是在回调中返回的,并且执行继续。您能否举例说明如何实现此目的?
小智 4
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.";
});
}
Run Code Online (Sandbox Code Playgroud)
不过,我发现使用这种方法强制回滚存在一些限制。如果你抛出一个错误,它就会被承诺链吞没并且永远不会出去。
| 归档时间: |
|
| 查看次数: |
571 次 |
| 最近记录: |