首页 > 解决方案 > 承诺“解决”是将对象转换为字符串?

问题描述

这个承诺将我的对象转换为字符串

cobraCommand() {

  const data = this.getData(localStorage.getItem('BusinessAddress'))

  new Promise((resolve, reject) => {

    if(data){
      let newData = this.removeEmptyProps(data)
      console.log(newData, "before RESOLVE")
      resolve(newData)
    }
  }).then(function(result) {

    console.log(result + "in THEN");

  }).then(function(result) {
    return result;
  })
}

data 是一个对象,并且 removeEmptyProps 删除具有空属性值的字段。

console.log(newData, "before RESOLVE")

返回

{name: "BusinessAddress"} "before RESOLVE"

.

console.log(result + "in THEN");

返回

[object Object]in THEN

标签: javascriptecmascript-6

解决方案


这是因为您执行object + stringjs 将对象转换为字符串以便能够连接它们。要做到这一点,如果您没有在对象中创建一个,它会调用Object.toString()默认值return "[object Object]"

,如果您不希望此调用,则需要在对象和字符串之间使用toString

let obj = {}
console.log(obj+"")
console.log(obj.toString())
console.log(obj, "a string")

let objWithToString = {
  toString() {
    return "I have my own to string"
  }
}
console.log("objWithToString.toString() returns :" + objWithToString)


推荐阅读