gpt4 book ai didi

javascript - 运行 do while 循环会导致 fatal error

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

我正在尝试使用 Google Drive api 获取特定文件夹中的文件列表。现在,当我尝试运行 do..while 循环以获取小块文件列表时,应用程序崩溃并出现 fatal error :

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory  

片段

function listFiles(auth) {
const drive = google.drive({ version: "v3", auth });
let pageToken = null;

do {
drive.files.list({
pageSize: 10,
q: "'root' in parents and trashed=false",
fields: "nextPageToken, files(id, name)",
pageToken: pageToken,
}, (err, res) => {
if (err) return console.error(`The API returned an error: ${err}`);

pageToken = res.data.nextPageToken;
const files = res.data.files;

if (files.length) {
files.forEach((file) => {
console.log(`${file.name} (${file.id})`);
});
} else {
console.log("No files found!");
}
});
}
while(!pageToken);

据我所知如果没有更多文件,nextPageToken将是未定义的。

最佳答案

相信你听说过 JS 中的“异步”这个词。显然 drive.files.list 是一个回调风格的异步函数。此 pageToken = res.data.nextPageToken 赋值发生在该回调内,这意味着 pageToken 的值不会立即从 null 更改为 something

但是你的 do...while 逻辑是同步发生的。因此 while(!pageToken) 基本上等于 while(true)。这就是你收到错误的原因,你的程序陷入了无限循环。

关于javascript - 运行 do while 循环会导致 fatal error ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61303826/

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