2014-11-28 4 views
0

Я уверен, что это довольно просто, но я новый в javascript ... У меня есть поиск в течение длительного времени, но я не нашел решение В PARSE, я хочу создать объект и получить идентификатор пошел он сохранитьPARSE: Получить идентификатор объекта после сохранения

var Obj = Parse.Object.extend("obj"); 
var obj = new Obj(); 
obj.save(null,{success:function(obj){alert(obj.id)}}) 

это предупреждение идентификатор, но когда я пытаюсь получить значение я получаю только неопределенная

var Obj = Parse.Object.extend("obj"); 
var obj = new Obj(); 
var objid; 
obj.save(null,{success:function(obj){objid = obj.id}}) 
alert(objid) 

неопределенными

Вы можете мне помочь?

ответ

3

Обратный вызов успеха, который вы передаете в obj.save, называется асинхронно: он выполняется в какой-то момент после получения ответа об успешном ответе библиотекой Parse. Предупреждение в вашем втором примере называется синхронно: оно не дожидалось, что успешный обратный вызов будет выполнен, поэтому objid на этом этапе не будет определено.

Это не проблема, связанная с Parse, но одна из задач обработки асинхронного кода в JavaScript в целом. Эти ответы дадут вам быстрое интро к асинхронности в JS:

Why is my variable unaltered after I modify it inside of a function? - Asynchronous code reference

How do I return the response from an asynchronous call?

1

Чтобы расширить то, что user2943490 правильно указал, если вы хотите, что сигнал(), чтобы работать, просто переместить его в обратный вызов успеха.

0

В качестве еще одного примечания, в данный момент в Parse включены обещания, в которых функции могут вызываться и определяться один за другим после завершения. Вот пример, который возвращает objectId вновь созданного объекта.

var ParseObj = Parse.Object.extend("obj"); 
// Create a new instance of class. 
var obj = new ParseObj(); 
obj.save(null, { useMasterKey: true }).then(function(obj) { 
    response.success(obj.id); //obj.id is the objectId 
}, function(error) { 
// If there's an error storing the request, render the error page. 
    response.error('Failed to save object.'); 
}); 
Смежные вопросы