在JavaScript中使用承诺时,回调中缺少参数

在JavaScript中使用承诺时,回调中缺少参数,javascript,jquery,Javascript,Jquery,我使用jQuery.get()()发出一个简单的请求,并承诺传递两个参数(id,errors),因此当我使用回调处理拒绝时,它看起来像是错误消失,当我使用console.log(errors)时,它显示未定义 我试图做的是向(people部分)发出请求,因此如果我遇到2个或更多错误,我将中断递归并在控制台中向消息显示,但是如果只有一个错误,则应该继续使用下一个字符 我想我传递的参数是正确的,有人能解释一下我错在哪里吗 这是我的密码: const URL_API = 'https://swapi.

我使用
jQuery.get()
()发出一个简单的请求,并承诺传递两个参数(id,errors),因此当我使用回调处理
拒绝
时,它看起来像是错误消失,当我使用
console.log(errors)
时,它显示未定义

我试图做的是向(people部分)发出请求,因此如果我遇到2个或更多错误,我将中断递归并在控制台中向消息显示,但是如果只有一个错误,则应该继续使用下一个字符

我想我传递的参数是正确的,有人能解释一下我错在哪里吗

这是我的密码:

const URL_API = 'https://swapi.co/api'
const PEOPLE_URL_API = '/people/'

const CHARACTERS = `${URL_API}${PEOPLE_URL_API}`
const options = { crossDomain: true }

let i = 0
let errors = 0

function getCharacterName(id, errors) {
    return new Promise((resolve, reject) => {
        $
            .get(`${CHARACTERS}${id}`, options, (data) => {
                resolve(data)
            })
            .fail(() => reject(id, errors))
    })
}

// CallBack that will handle a possible error
const onError = (id, errors) => {
    console.log(id, errors)
    errors++
    if (errors < 3) {
        console.log(`We coudn't find the character ${id}`)
        recursive(i, errors)
    } else {
        console.log(`Too much errors, we can't continue`)
        console.log(errors)
    }
}

function recursive(i, errors) {
    i += 1
    getCharacterName(i, errors)
        .then((data) => {
            console.log(
                `I'm the character ${data.url
                    .substring(28)
                    .replace('/', '')}, my name is: ${data.name}`
            )
            console.log(i, errors)
            return recursive(i, errors)
        })
        .catch(onError)
}

recursive(i, errors)

reject
只有一个参数。你是对的,我更改了它,一切都像一个符咒。
reject
只有一个参数。你是对的,我更改了它,一切都像一个符咒。
...
I'm the character 16, my name is: Jabba Desilijic Tiure
16 0
swapi.co/api/people/17/?crossDomain=true:1 GET https://swapi.co/api/people/17/?crossDomain=true 404
17 undefined
Too much errors, we can't continue