如何使用promise返回TypeError - javascript

时间:2018-05-09 04:13:29

标签: javascript promise

我写了一个Promise函数将Object的Object转换为Object of Array:

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将返回一个对象数组,但是如果objectOfObject不是对象的对象,我怎么能通过使用拒绝返回TypeError,这会导致我相信的类型错误?

感谢。

3 个答案:

答案 0 :(得分:0)

您可以使用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)
    }
  })
}

答案 1 :(得分:0)

我想您可能希望将错误设为Error的实例:

reject(new Error('error'))

答案 2 :(得分:0)

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)

  })
}
相关问题