gpt4 book ai didi

JavaScript异步函数Google Sheet API,数据可用性因公式检索而延迟?如何克服?

转载 作者:行者123 更新时间:2023-12-02 23:12:26 25 4
gpt4 key购买 nike

我正在使用 Google 表格 gapi.update 编写公式,然后立即调用函数 makeApiCall,尝试使用 gapi.get 从该单元格检索数据。

此检索查询的第一次迭代几乎不可避免地会返回未定义,因为公式未及时处理请求。

我尝试创建一个 for 循环来重复请求,与 !==null 相比,该循环在检索单个响应之前执行 4 次迭代。然而,所需的值通常会在第二次查询后返回到控制台。我还尝试用时间延迟来重写它,这似乎并没有真正休眠,它们只是延迟显示数据。我还尝试使用异步函数+等待+返回进行重写,并设法等待未定义的返回,但不循环获取所需的数据。

有没有一种简单的方法可以延迟请求。或者在每个之间等待

async function makeApiCall(pos) {
var params = {
spreadsheetId: 'GoogleSpreadsheetID',
range: 'Sheet1!B1',
};

var i;
for (i = 0; i < 4; i++) {
var request = gapi.client.sheets.spreadsheets.values.get(params);
request.then(function(response) {
dataOu = (response.result.values);
if (dataOu.value !== null) {
displayRes(pos)
}
});

}

我的预期结果是我的全局变量dataOu从公式中检索>null,如果没有,它应该重复查询。有没有办法将其编写为适当的异步函数,如果未收到所需的响应,则重复请求。或者在 for 循环迭代之间设置计时器的方法。这不是一个简单的异步调用,因为它不仅仅是等待响应,而是想要检索特定响应。

最佳答案

是的,这应该可以通过 await 轻松实现:

async function makeApiCall(pos) {
const params = {
spreadsheetId: 'GoogleSpreadsheetID',
range: 'Sheet1!B1',
};

let response = await gapi.client.sheets.spreadsheets.values.get(params);
while (response.result.values == null) { // or whatever you need to check
await new Promise(resolve => setTimeout(resolve, 5)); // delay the loop a bit
response = await gapi.client.sheets.spreadsheets.values.get(params); // try again
}
const dataOu = (response.result.values);
if (dataOu.value !== null) {
displayRes(pos);
}
}

关于JavaScript异步函数Google Sheet API,数据可用性因公式检索而延迟?如何克服?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57285028/

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