使用h5原生获取手机通讯录联系人,少量数据能直接获取到, 但当获取的数量达到两三万的时候,应用直接闪退了,目前找了一些文档,也没有啥解决方案。想问问各位有没有什么解决思路
plus.contacts.getAddressBook(phoneNum, addressbook => {
addressbook.find(["displayName", "phoneNumbers"], async contacts => {
}, () => {
使用h5原生获取手机通讯录联系人,少量数据能直接获取到, 但当获取的数量达到两三万的时候,应用直接闪退了,目前找了一些文档,也没有啥解决方案。想问问各位有没有什么解决思路
plus.contacts.getAddressBook(phoneNum, addressbook => {
addressbook.find(["displayName", "phoneNumbers"], async contacts => {
}, () => {
以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:
【您想要解决的问题】:您提问的目的是解决在使用uniapp开发应用时,通过H5原生方式获取手机通讯录联系人时,当联系人数量达到两三万时应用出现闪退的问题。
【问题出现原因】:
【问题解决方案】:
【提供代码】: 以下是一个示例代码,展示了如何分批次获取联系人数据:
// 假设每次处理的联系人数量
const BATCH_SIZE = 500;
// 模拟获取联系人数据的函数
function fetchContacts(page, size) {
// 这里应该是调用实际的API获取数据
// 返回一个Promise,模拟异步获取数据
return new Promise((resolve) => {
setTimeout(() => {
resolve([...Array(size)].map((_, index) => ({
displayName: `Name ${page * size + index}`,
phoneNumbers: [`Phone ${page * size + index}`]
})));
}, 1000);
});
}
// 分批处理联系人
async function processContacts() {
let page = 0;
let hasMore = true;
while (hasMore) {
const contacts = await fetchContacts(page++, BATCH_SIZE);
if (contacts.length < BATCH_SIZE) {
hasMore = false;
}
// 处理每批联系人数据
console.log('Processing contacts:', contacts);
}
}
processContacts();
【代码运行方式】:
processContacts
函数。【代码预期运行结果】:
【推荐相关链接】: