gpt4 book ai didi

Javascript promise 链 - ES6

转载 作者:行者123 更新时间:2023-12-02 14:51:55 24 4
gpt4 key购买 nike

我正在尝试链接一些 promise ,但由于理解这些概念而遇到麻烦。

我试图从数据库返回一些数据,只有当行数小于选定的数量时,否则它将返回错误。

到目前为止,我有一种获取数据并返回 promise 的方法,如下所示:

fetchDataPoints(dataset,fields,startTimestamp,endTimestamp){

let self = this;
let queryBody = " FROM [bi].[" + dataset + "] " +
"WHERE [timestamp] >= '" + startTimestamp.format("YYYY-MM-DD HH:mm:ss") + "' " +
"AND [timestamp] < '" + endTimestamp.format("YYYY-MM-DD HH:mm:ss") + "' " ;


let rowCountCheck = new Promise(function(resolve,reject) {
let request = new self.sql.Request();

let rowCheckQueryString = "SELECT COUNT(*) AS row_count " + queryBody;
request.query(rowCheckQueryString).then(function(recordSet){
if (recordSet[0].row_count > self._rowLimit) {
reject("Too many rows");
} else {
resolve();
}
});
});

let request = new self.sql.Request();

let fieldsString = "[timestamp],[etl_timestamp]";
for(let i = 0; i < fields.length; i++){
fieldsString += ",[" + fields[i] + "]";
}
let resultQueryString = "SELECT " + fieldsString + queryBody + " ORDER BY [timestamp] DESC";
let resultQuery = request.query(resultQueryString);

return rowCountCheck.then(resultQuery);

}

但是这并没有按预期方式工作。更熟悉 Promise 的人能否澄清它们如何用于此类事情?

最佳答案

您可以返回request.query,而不是将其用作回调函数:

return rowCountCheck.then(function(response){
let request = new self.sql.Request();
let fieldsString = "[timestamp],[etl_timestamp]";

for(let i = 0;i < fields.length; i++){
fieldsString += ",[" + fields[i] + "]";
}

let resultQueryString = "SELECT " + fieldsString + queryBody + " ORDER BY [timestamp] DESC";

return request.query(resultQueryString);
});
`

关于Javascript promise 链 - ES6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36131029/

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