使用Google API gapi.client.sheets.spreadsheets.get时,浏览器会无限期挂起。无法解决promise上的成功或错误处理程序。
这仅在更新到Chrome 67后才开始,Chrome 67已使用相同的脚本和请求的相同电子表格在多台计算机上进行了验证。仍适用于66,65等。也适用于Firefox和Edge。由于API代码中的其他原因,似乎无法使用Internet Explorer。
gapi.client.sheets.spreadsheets.get({
spreadsheetId: sheetId,
ranges: ['Sheet1!A1:I','Sheet2!A1:J', 'Sheet3!A1:I', 'Sheet4!A1:B'],
includeGridData: true,
}).then(function(response) {
console.log("Data loaded!")
var range = response.result;
if (range.sheets.length > 0) {
doStuff();
} else {
appendPre('No data found.');
}
}, function(response) {
console.log("Error!")
appendPre('Error: ' + response.result.error.message);
});
我希望从这段代码中看到至少一个记录为“Data Loaded”或“Error”的日志,但它永远不会发生。
我确实注意到请求的大小A.或者请求中包含的空行之间似乎存在某种相关性。
控制台唯一说的是:
[违规]'readystatechange'处理程序耗时537ms cb = gapi.loaded_0:123
[违规]'setTimeout'处理程序耗时754毫秒
请求的大小为1 MB,内容为62.3 MB。
另一个有趣的事情,我希望不是红鲱鱼,当Firefox显示请求的响应数据时,有一条消息说:
“SyntaxError:JSON.parse:在JSON数据的第29170行第21行读取对象内容时的数据结尾”
当您查看响应时,它会在代码中间突然结束。它让我相信是的,响应是如此之大以至于它刚刚结束 - 也许Firefox能够处理这种奇怪,但新版本的chrome不能。
即使我在Chrome中获得了请求的状态代码200,但响应完全是空白的 - 就像白色一样 - 根本没有消息。
似乎我可以通过将其分解为多个较小的请求来解决这个问题,但我之前没有这样做,所以只是想确保我没有编写错误的代码。
我的问题是: 有其他人遇到过这个问题吗?
之前有没有人遇到过请求大小的问题?
还有其他建议吗?