Ваша проблема в том, что, хотя вы await
выполняете эту функцию, верхний уровень продолжается, и выполнение заканчивается до того, как ваш код сможет запустить.
Хорошая новость заключается в том, что Zapier уже упаковывает ваш код в асинхронную функцию, поэтому вы можете использовать await
на верхнем уровне (для этих документов ).
Попробуйте вместо этого:
const limitPerPage = 20;
const apiUrl = "https://myurl.com/data";
let lastCursor = null;
// var output = null; // zapier does this for you already
const getContent = async function (cursor) {
const actualUrl = apiUrl + `?cursor=${cursor}&limit=${limitPerPage}`;
const rawResponse = await fetch(actualUrl)
return resp.json() // async function, you had it as a property
}
const getEntireContentList = async function (cursor) {
const results = await getContent(cursor);
console.log("Retreiving data from API for cursor : " + cursor);
if (results.metadata.cursor !== "") {
return results.concat(await getEntireUserList(results.metadata.cursor)); // should this be named getEntireContentList?
} else {
return results;
}
};
return {
results: await getEntireContentList()
}
Я заметил, что это рекурсивный подход. Это хорошо, но помните, что у вас ограниченное время выполнения. Вы также можете столкнуться с ограничением памяти (в зависимости от того, сколько объектов вы возвращаете), так что следите за этим.