【问题标题】:How to use promise return TypeError - javascript如何使用承诺返回 TypeError - javascript
【发布时间】:2018-10-19 02:26:24
【问题描述】:

我写了一个 Promise 函数把 Object of Object 变成 Array of Object:

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,我相信这会导致类型错误?

谢谢。

【问题讨论】:

  • 你得到的 TypeError 到底是什么?
  • 我相信这会导致类型错误...您必须确保提出问题,否则您可能会根据想法得到答案我相信
  • 你的意思是验证objectToArray可用的参数是否有父对象?

标签: javascript promise


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我想你可能想让错误成为Error 的实例:

    reject(new Error('error'))
    

    【讨论】:

      【解决方案3】:
      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)
      
        })
      }
      

      【讨论】:

      • 如果您发现这是堆栈溢出社区的解决方案,请接受它作为答案,如果您觉得有用,请点赞
      猜你喜欢
      • 1970-01-01
      • 2023-01-27
      • 1970-01-01
      • 1970-01-01
      • 2015-11-04
      • 1970-01-01
      • 2016-06-15
      • 1970-01-01
      • 2019-11-02
      相关资源
      最近更新 更多