gpt4 book ai didi

javascript - 为什么以下解析代码不返回错误?

转载 作者:行者123 更新时间:2023-12-02 14:59:25 25 4
gpt4 key购买 nike

我有两个函数:一个用于获取对象,另一个用于将这些对象分配给对象的属性:

var Building = Parse.Object.extend('Building')

store.findBuildings = () => {
var query = new Parse.Query(Building)
return query.find({
success: function (building) {
console.log('Succes:', building)
},
error: function (building, error) {
console.log('Error:', error.message)
}
})
}

store.reloadBuildings = (obj, prop) => {
store.findBuildings().then(buildings => {
console.log('BUILDINGS', buildings)
let buildings2 = _.map(buildings, (building) => building)
console.log('BUILDINGS 2', buildings2)
}, function (err) {
console.log('Error:', err)
})
}

如果我在 store.reloadBuildings 中执行 console.log('BUILDINGS',buildings.toJSON()) ,则 console.log停止输出任何内容,这意味着出现错误。但是,console.log('Error:', err) 也不显示任何内容。

也许我以错误的方式编写了错误处理?

编辑:

我也尝试过这个:

}).catch(err => {
console.log('Error:', err)
})

但我得到:未捕获类型错误:store.findBuildings(...).then(...).catch 不是函数

最佳答案

Parse 的 SDK 使用的 Promises 并不完全符合 ES6 Promises - 可能它们是在标准最终确定(2015 年 6 月)之前实现的。

他们的实现定义了 .fail()方法而不是标准的 .catch()

}).fail(err => {
console.log('Error:', err)
})
<小时/>

在第一个代码段中,未调用 console.log('Error:', err) 的原因是回调绑定(bind)到 store.findBuildings() 中的 Promise ,已解决,因此对其自己的任何 .fail() 回调没有任何用处。

var promise = store.findBuildings();

promise.then(success, failure);

要响应 .then() 回调中引发的错误,您必须绑定(bind)到 .then() 创建并返回的下一个 Promise。抛出的错误将导致 Promise 被拒绝。

而且,这就是您在编辑中尝试做的事情。

var promise = store.findBuildings();

promise.then(success).fail(failure);

// same as...
var promise2 = promise.then(success);
promise2.fail(failure);

关于javascript - 为什么以下解析代码不返回错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35545379/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com