我正是这样做的:
const Document = Parse.Object.extend('Document')
const query = new Parse.Query(Document)
let result = {}
query.get(id, {
success: function (object) {
result = object.toJSON()
console.log(result)
},
error: function (object, error) {
alert(`Error: ${error.code} ${error.message}`)
}
})
console.log(result)
return result
第一个console.log(result)
输出对象:
对象{content:" trstrtrts",createdAt:" 2016-01-17T11:20:30.694Z", 标题:"文件2",updatedAt:" 2016-01-17T11:20:30.694Z",wordCount: " 3000" ...}
但第二个没有回报。从Parse查询返回对象的正确方法是什么?
修改
基于Anon的回答,我尝试了这个:
store.js:
store.first = (id) => {
var query = new Parse.Query(Document)
return query.get(id)
}
export default store
main.js:
store.first(to.params.id).then((document) => {
console.log(document.toJSON())
return document.toJSON()
})
但是我收到以下错误:
未捕获TypeError:对象函数ParsePromise(){ _classCallCheck(this,ParsePromise); this._resolved = false; this._rejected = false; this._resolvedCallbacks = []; this._rejectedCallbacks = [];没有方法'所有'
答案 0 :(得分:1)
第二个
console.log(result)
发生在第一个之前.Query是一个异步操作。 这样做的正确方法是使用promises。例如,您可以
function foo(id){
var Document = Parse.Object.extend('Document');
var query = new Parse.Query(Document);
return query.get(id);
}
然后像这样使用函数foo:
foo(objectID).then(function(object){
//do something with the object.
})
这是一个在js中显示异步的示例。
console.log('a');
setTimeOut(function(){console.log('b')},0);
console.log('c');
打印的顺序是 一个 C B'/ P>
(我们有超时但是超时的功能在事件循环中进行并在完成功能后发生)
有关详情,请阅读https://developer.mozilla.org/he/docs/Web/JavaScript/EventLoop 关于eventloop