我的問題很簡單。你可以從另一個web服務的Success函數調用C#web服務嗎?我認爲答案是否定的。從另一個Webservice的Success函數調用C#webservice?
我有一個登錄webservice,當用戶嘗試做某些事情需要用戶登錄時調用。然後調用另一個webservice,當動作完成時它不會進入onSuccess函數。我認爲它不能這樣做?它是否正確?
示例代碼,而不是實際的代碼。
webservice.login(onLoginSuccess)
function onLoginSuccess(){
webservice.doSomething(onDoSomethingSuccess)
}
function onDoSomethingSuccess(){
.... does not get here.
}
這是它的代碼,它是裸露的骨頭。
在客戶端JavaScript調用上,成功登錄webservice。
function onLoginSuccess(result){
negotiateWithUser(true,
activeUser.id,
negotiation.dateID,
activeUser.showChat,
true);
}
function negotiateWithUser() {
<code>
if (justLoggedIn) updateDateData();
<code>
}
function updateDateData(){
if (populate==false){
populate=true;
WebService.Negotiations.DatesGet(activeUser.id,SucceededtoCallbackDateRefresh, ErrorHandler);
}
}
不進入功能SucceededtoCallbackDateRefresh即使返回的數據並沒有錯誤。
我想我知道問題出在哪裏,在negotiateWithUser函數中調用updateDateData,執行控制返回給negotiateWithUser函數,而不是進入SucceededtoCallbackDateRefresh成功函數,因爲它是異步調用。我認爲需要某種回調函數。
我通過調用onLoginSuccess函數中的setInterval()中的updataDateData函數來解決問題。
function onLoginSuccess(result){
if (negotiate) {
timerInterval = setInterval("updateDateData()", 300);
}
}
它的工作原理。如果有人有更優雅的方法,我會非常感興趣。
謝謝。
您*可以*。這並不一定是一個好主意。仔細地踩踏:) –
感謝大衛,但它似乎並不適合我。 – Welshboy
嗯,你提到這不是你的實際代碼,所以我沒有太具體的評論它。如果它不起作用,我建議的第一件事就是確保您對服務的引用是正確的 - 如果您發佈了更具代表性的代碼段,可能會有所幫助。 –