javascript - 承诺“解决”是将对象转换为字符串?
问题描述
这个承诺将我的对象转换为字符串
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
解决方案
这是因为您执行object + string
js 将对象转换为字符串以便能够连接它们。要做到这一点,如果您没有在对象中创建一个,它会调用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)
推荐阅读
- python - Python,熊猫数据框,坐标的条件格式
- mongodb - mongodb 哪些文档批量写入更新
- stream - 没有输入的 Dart Stream
- r - 如何计算一列数据框中有多少个重复公式?R
- python - 优先约束 Pyomo
- javascript - 从另一个 HTML 文件导入的 Javascript 更改元素
- php - Sql Select Where In 无法正常工作
- android - 使用 SNPE 实现 mobilenetssd
- visual-studio-code - Visual Studio 代码 - 巨大的代码片段
- javascript - ExtJS listConfig 在项目选择器中不起作用