gpt4 book ai didi

node.js - 返回带有 promise 的递归函数

转载 作者:搜寻专家 更新时间:2023-10-31 22:21:50 24 4
gpt4 key购买 nike

我正在尝试拥有一个功能,该功能将通过端点进行分页以获取所有联系人。现在我的 promise 只返回我不明白的数字 2。我希望它返回所有联系人。这是我目前的代码。我希望有人能帮助我了解如何正确返回联系人数组。

function getContacts(vid,key){

return axios.get('https://api.hubapi.com/contacts/v1/lists/all/contacts/all?hapikey=' + key + '&vidOffset=' + vid)
.then(response =>{
//console.log(response.data['has-more'])
//console.log(response.data['vid-offset'])
if (response.data['has-more']){
contacts.push(getContacts(response.data['vid-offset'],key))
if(vid === 0){
return contacts.push(response.data.contacts)
}else{
return response.data.contacts
}

}else{
//console.log(contacts)
return response.data.contacts
}
})


}

最佳答案

我会让 getContacts 函数返回一个解析为所有联系人列表的 promise 。在该函数中,您可以链接加载数据页面的各个 promise :

function getContacts(key){
const url = 'https://api.hubapi.com/contacts/v1/lists/all/contacts/all'

let contacts = []; // this array will contain all contacts

const getContactsPage = offset => axios.get(
url + '?hapikey=' + key + '&vidOffset=' + offset
).then(response => {
// add the contacts of this response to the array
contacts = contacts.concat(response.data.contacts);
if (response.data['has-more']) {
return getContactsPage(response.data['vid-offset']);
} else {
// this was the last page, return the collected contacts
return contacts;
}
});

// start by loading the first page
return getContactsPage(0);
}

现在你可以像这样使用函数了:

getContacts(myKey).then(contacts => {
// do something with the contacts...
console.log(contacts);
})

关于node.js - 返回带有 promise 的递归函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41307202/

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