gpt4 book ai didi

node.js - 太多回调..nodeJS airtable api

转载 作者:太空宇宙 更新时间:2023-11-03 22:51:48 24 4
gpt4 key购买 nike

首先,我是 NodeJS 的新手,想提高我的技能。我在 Airtable 中有一张表,想从中获取所有元素。使用适用于 Node.js 的 Airtable API 即可轻松完成。但我想做的是将这些元素推送并保存在选项卡中以供将来使用(JSON、Excel ...)。为此,我使用回调,因为调用是异步的。我听说过 Promises,但它对我来说很新,我几乎不理解它。这是我现在的代码:

var Airtable = require('airtable'); 
Airtable.configure({
endpointUrl: 'https://api.airtable.com',
apiKey: 'keyKWYJPOEObWhNt2'
});
var base = Airtable.base('app4qIwfmG0ZKAdBH');
var view = "Main View";


var tab = [];
base('Table 1').select({
view : view}).eachPage(function page(records, fetchNextPage){records.forEach(function(record){
tab.push({
"Name": record.get('Name'),
"Notes": record.get('Notes')
});
});
fetchNextPage();
pushToArray(tab);
}, function done (error){
if(error){ console.log(error);
console.log(tab);}
});

function pushToArray(tab) {
TabToJson(tab);
return tab;
};

function TabToJson(tab){
console.log(tab);
return JSON.stringify(tab);
};

我如何实现 promise ?这里有必要吗?我不想最终得到十几个回调函数。谢谢大家,祝您有美好的一天!

最佳答案

这里要小心!您意识到这个函数是异步的,并且您希望等到 #eachpage 的每次迭代都解决后再编写输出 JSON,就像 Promise 一样,您的思路是正确的。但 Airtable 已经提供了您正在寻找的内容:回调

function done (error){
if(error){ console.log(error);
console.log(tab);
}
}

将在最后一次成功调用#fetchNextPage 后立即运行。这是您应该拥有 JSON 写入逻辑的地方。你会想要类似的东西

function done (error){
TabToJson(tab);

if(error){ console.log(error);
console.log(tab);
}
}

您不需要函数pushToArray,因为您已经在每次调用#page 时将各个记录从Airtable 推送到数组“选项卡”中。此外,如果您想做的不仅仅是记录 JSON 输出(您的问题看起来如此),您应该查看 Node 的 File System Library 。检查 fs#writeFile 方法。

关于node.js - 太多回调..nodeJS airtable api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39892987/

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