You need to sign in to do that
Don't have an account?
Nobu.S
カスタムボタンにてWebServiceをコールする際の処理順序の制御の方法
商談の詳細画面に配置したカスタムボタンからApexのWebServiceを呼び出していますが、処理に非常に時間がかかるため、その間ローディング画面等にしておきたいと考えます。
BlockUIのプラグインを使うことを想定しています。
意図しているところは、ブロック->Webservice呼び出し->ブロック解除ですが、実際の挙動がWebService処理->ブロック->ブロック解除となってしまいます。(解除部分をSetTimeoutで確認)
Promiseを使用しても結果が変わりません。
意図する順番通りの処理となるような方法はありませんでしょうか?(BlockUIのツールにはこだわりません)
BlockUIのプラグインを使うことを想定しています。
意図しているところは、ブロック->Webservice呼び出し->ブロック解除ですが、実際の挙動がWebService処理->ブロック->ブロック解除となってしまいます。(解除部分をSetTimeoutで確認)
Promiseを使用しても結果が変わりません。
意図する順番通りの処理となるような方法はありませんでしょうか?(BlockUIのツールにはこだわりません)
{!REQUIRESCRIPT("/soap/ajax/30.0/connection.js")} {!REQUIRESCRIPT("/soap/ajax/30.0/apex.js")} {!REQUIRESCRIPT('/resource/' & LEFT(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(TEXT(NOW()),':',''),'-',''),' ',''),10) & '000/jQuery')} // includescript jQuery {!REQUIRESCRIPT('/resource/' & LEFT(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(TEXT(NOW()),':',''),'-',''),' ',''),10) & '000/jQueryBlockUI')} //includescript jQueryBlockUI var $ = jQuery.noConflict(); var promise = Promise.resolve(); function block(){$.blockUI();} function unblock(){$.unblockUI();} function exeWS(){ var retStr; retStr = sforce.apex.execute("ApexClass", "WebserviceMethod", {oppId:'{!Opportunity.Id}'}); alert(retStr); } promise.then(block).then(exeWS).then(unblock); window.location.reload();
以下のリンクを参照してください (For more refere below link)
https://developer.salesforce.com/forums/?id=906F00000008x3bIAA
All Answers
when calling Webservice from custom button, I'd like to show loading screen while webservice is processing because it takes few seconds.
Now I'm using BlockUI plug-in, and I expect the program sequence as 'block' -> 'call webservice' -> 'unblock'. However, it works as ''call webservice' -> 'block' -> 'unblock' even if I use 'Promise' chain method.
How can I handle the sequence as I expect? ('BlockUI is not mandatory)
Best regards,
以下のリンクを参照してください (For more refere below link)
https://developer.salesforce.com/forums/?id=906F00000008x3bIAA
Thanks for your comment. I adjusted code and tried callback function, however, sequence didn't fixed. Webservice ran before block.
Do you have any other idea?
Hint : You can use oncomplete event of apex:commandButton where you can call JavaScript function.