در این مثال دو تا فانکشن داریم که به صورت ajax از وب سرویس اطلاعاتی رو دریافت می کنند و در صورتی که هر کدام از فانکشن ها اطلاعات رو از سرور دریافت کردند و مشکلی نداشتند، فانکشن بعدی رو صدا کنند.
فانکشن اصلیی برنامه:
می خواهیم اگر خروجی فانکشنFun1 صحیح بود فانکشن Fun2 اجرا بشود.
function Main() { Fun1(function () { Fun2(); }); }
فانکشن Fun1:
فانکشن Fun1 یک پارامتر با نام CallBack با خودش دارد. توی خط 5 سرویس مربوطه صدا زده می شود ( فانکشن CallWebService به صورت ajax وب سرویس مربوطه رو صدا می زند). در صورتی که خروجی مورد نظر صحیح باشد، CallBack صدا زده می شد. و برنامه به فانکشن Main برمی گردد و Fun2 رو صدا می زند.
function Fun1(callback) { var url = "your url" var parameters = ''; try { var result = CallWebService(url, parameters); if (result == 'success') callback(); else alert("process faild"); } catch (e) { alert("error happend"); } }
فانکشن Fun2:
فانکشن Fun2 مثل یک فانکشن معمولی نوشته می شود و با توجه به خروجی سرویس، پیام مناسب را نمایش می دهد.
function Fun2() { var url = "your url" var parameters = ''; try { var result = CallWebService(url, parameters); if (result == 'success') alert("process success"); else alert("process faild"); } catch (e) { alert("error happend"); } }
فانکشن CallWebService یک فانکشن ساده می باشد که سرویس مورد نظر را به صورت ajax صدا می زند.
function CallWebService(WebserviceUrl, Parameter) { var rst = null; try { var options = { type: "POST", url: WebserviceUrl, data: Parameter, contentType: "application/json; charset=utf-8", dataType: "json", async: false, beforeSend: function () { WaiterShow(); }, success: function (response) { rst = response.d; }, error: function (errAjax) { alert('Error in CallWebService: ' + errAjax.responseText); rst = null; }, complete: function (data) { WaiterHide(); } }; $.ajax(options); } catch (err) { alert('Error in CallWebService: ' + err.message); rst = null; } return (rst); }
امیدوارم مفید باشد.
با سپاس