gpt4 book ai didi

javascript - CosmosDB 存储过程 - promise 而不是回调

转载 作者:搜寻专家 更新时间:2023-11-01 04:22:18 25 4
gpt4 key购买 nike

是否可以在 CosmosDB (DocumentDB) 存储过程 API 调用中使用 javascript promise 而不是常规回调?一种用法是实现分页。

例如

token = getToken();
doSomething(token);

//....
function getToken(....) {

//...
collection.queryDocuments(link, query, queryOptions, function(error, documents, responseOptions) {
return responseOptions.continuation;
});
}

不会工作,因为 token 在回调中返回,并且执行继续。您能否举例说明您将如何实现这一点?

最佳答案

Cosmos DB 文档中引用的 ECMAScript 版本支持异步/等待和 Promises。我可以在我的存储过程中使用这两个。

这是一个返回进行参数化文档查询的 promise 的函数:

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.";
});
}

不过,我发现使用这种方法强制回滚存在一些局限性。如果你抛出一个错误,它会被 promise 链吞没并且永远不会出来。

关于javascript - CosmosDB 存储过程 - promise 而不是回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46910406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com