关于递归使用ajax的返回值问题

peg600
  • 25

用vue做的,原本是双重for循环,内层嵌套ajax获取对象。现在需要把内层for循环改为递归ajax函数,结果返回值arr为undefined,ajax内部arr的值能正常获取。看网上的方法在getProducts函数调用自身时前面加return也是一个结果,问下如何解决?图片描述

图片描述

回复
阅读 1.9k
1 个回答

这个需求完全可以用promise.all啊

function getProducts(link, typeId, pageNum, pageMax) {
    const arr = []
    for (let i = pageNum; i < pageMax; i++) {
        link = `${link}?id=${typeId}&page=${i}`
        arr.push(
            $.ajax({
                url: link,
                type: 'get',
                async: false,
                timeout: 5000,
                dataType: 'json'
            })
        )
    }
    return arr
}
const arr = getProducts('www.baidu.com', 1, 1, 10)
Promise.all(arr).then(function (values) {
    console.log(values)// 这个values就是你要的数组
})
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏