为什么以下 Parse 代码不返回错误?
Why isn't the following Parse code returning an error?
我有两个函数:一个获取对象,另一个将这些对象分配给对象的 属性:
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)
})
但我得到:Uncaught TypeError: store.findBuildings(...).then(...).catch is not a function
Parse 的 SDK 使用的 promise 并不完全符合 ES6 Promises——它们可能是在标准最终确定(2015 年 6 月)之前实施的。
他们的实现定义了一个 .fail()
方法而不是标准的 .catch()
。
}).fail(err => {
console.log('Error:', err)
})
在第一个片段中,console.log('Error:', err)
未被调用的原因是因为回调绑定到来自 store.findBuildings()
的 Promise,它已被解决,因此它自己的任何东西都没有用.fail()
个回调。
var promise = store.findBuildings();
promise.then(success, failure);
要响应 .then()
回调中抛出的错误,您必须绑定到 .then()
创建并返回的下一个 Promise。抛出的错误将导致 Promise 被拒绝。
而且,这就是您在编辑中尝试做的事情。
var promise = store.findBuildings();
promise.then(success).fail(failure);
// same as...
var promise2 = promise.then(success);
promise2.fail(failure);
我有两个函数:一个获取对象,另一个将这些对象分配给对象的 属性:
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)
})
但我得到:Uncaught TypeError: store.findBuildings(...).then(...).catch is not a function
Parse 的 SDK 使用的 promise 并不完全符合 ES6 Promises——它们可能是在标准最终确定(2015 年 6 月)之前实施的。
他们的实现定义了一个 .fail()
方法而不是标准的 .catch()
。
}).fail(err => {
console.log('Error:', err)
})
在第一个片段中,console.log('Error:', err)
未被调用的原因是因为回调绑定到来自 store.findBuildings()
的 Promise,它已被解决,因此它自己的任何东西都没有用.fail()
个回调。
var promise = store.findBuildings();
promise.then(success, failure);
要响应 .then()
回调中抛出的错误,您必须绑定到 .then()
创建并返回的下一个 Promise。抛出的错误将导致 Promise 被拒绝。
而且,这就是您在编辑中尝试做的事情。
var promise = store.findBuildings();
promise.then(success).fail(failure);
// same as...
var promise2 = promise.then(success);
promise2.fail(failure);