2013-02-09 95 views
-1

改變一個JSON變量中改變JSON變量失敗了下面的代碼片段:無法功能

var data = {status: ''}; 

rosconnection.setOnOpen(function (e) { 
     data.status = 'Succeeded'; 
     alert('success'); 
}); 

rosconnection.setOnError(function (e) { 
     data.status = 'Failed'; 
     alert('fail'); 
}); 

data保持爲空,但alert被內rosconnection.setOnOpen調用。這個錯誤很難複製,因此它在ros connection上使用,但我100%肯定它會成功地進入至少一個功能。

回答

2

你沒告訴我們你是怎麼知道的地位並沒有改變,因此...

我的賭注是:有沒有辦法,你看到沒有data警報被更改,以便您的代碼可能看起來是像這樣:

var data = {status: ''}; 

rosconnection.setOnOpen(function (e) { 
     data.status = 'Succeeded'; 
     alert('success'); 
}); 

rosconnection.setOnError(function (e) { 
     data.status = 'Failed'; 
     alert('fail'); 
}); 

alert(data.status); 

所以狀態還沒有設置。在回調中檢查它。 AJAX ...
AJAX是什麼意思? A是異步的,這意味着它將在將來(近或遠)的某個時候觸發,你無法知道何時,甚至有時甚至不會被調用。

更新版本:

var data = {status: ''}; 

rosconnection.setOnOpen(function (e) { 
     data.status = 'Succeeded'; 
     alert(data.status); 
}); 

rosconnection.setOnError(function (e) { 
     data.status = 'Failed'; 
     alert(data.status); 
}); 
+0

所以基本上它是一個時機的問題? – JavaCake 2013-02-09 20:12:35

+0

@JavaCake,確切地說,AJAX。 – gdoron 2013-02-09 20:13:12

+0

@gdoron你可能希望在這個意義上描述ajax c.c – Daedalus 2013-02-09 20:14:00