Как использовать обещание возврата TypeError - JavaScript - PullRequest
0 голосов
/ 09 мая 2018

Я написал функцию Promise, чтобы превратить объект объекта в массив объекта:

function objectToArray(objectOfObject) {
    return new Promise((resolve,reject) => {
        var newArray = Object.keys(objectOfObject).map(key => {
            let object = objectOfObject[key]
            object['id'] = key
            return object;
        })
        resolve(newArray)
        reject('error')
    })
}

Таким образом, мое Resolve вернет массив объектов, но как я могу вернуть TypeError, используя отклонение в случае, если objectOfObject не является объектом объекта, что, как я полагаю, вызвало ошибку типа?

Спасибо.

Ответы [ 3 ]

0 голосов
/ 09 мая 2018

Полагаю, вы можете захотеть сделать ошибку экземпляром Error:

reject(new Error('error'))
0 голосов
/ 09 мая 2018
function objectToArray (objectOfObject) {
  return new Promise((resolve, reject) => {
    if (typeof objectOfObject !== 'object') {
      reject(new TypeError())
    }
      var newArray = Object.keys(objectOfObject).map(key => {
        let object = objectOfObject[key]
        object['id'] = key
        return object
      })
      resolve(newArray)

  })
}
0 голосов
/ 09 мая 2018

вы можете использовать if...else

function objectToArray (objectOfObject) {
  return new Promise((resolve, reject) => {
    if (typeof objectOfObject === 'object') {
      var newArray = Object.keys(objectOfObject).map(key => {
        let object = objectOfObject[key]
        object['id'] = key
        return object
      })
      resolve(newArray)
    } else {
      reject(new TypeError())
    }
  })
}

или используйте try... catch

function objectToArray (objectOfObject) {
  return new Promise((resolve, reject) => {
    try {
      var newArray = Object.keys(objectOfObject).map(key => {
        let object = objectOfObject[key]
        object['id'] = key
        return object
      })
      resolve(newArray)
    } catch (error) {
      reject(error)
    }
  })
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...