محمد رضا
محمد رضا
خواندن ۶ دقیقه·۳ سال پیش

اجرای یک فانکشن بعد از تکمیل فانکشن قبلی در Javascript به روش CallBack

در این مثال دو تا فانکشن داریم که به صورت ajax از وب سرویس اطلاعاتی رو دریافت می کنند و در صورتی که هر کدام از فانکشن ها اطلاعات رو از سرور دریافت کردند و مشکلی نداشتند، فانکشن بعدی رو صدا کنند.




فانکشن اصلیی برنامه:

می خواهیم اگر خروجی فانکشنFun1 صحیح بود فانکشن Fun2 اجرا بشود.

function Main() { Fun1(function () { Fun2(); }); }

فانکشن Fun1:

فانکشن Fun1 یک پارامتر با نام CallBack با خودش دارد. توی خط 5 سرویس مربوطه صدا زده می شود ( فانکشن CallWebService به صورت ajax وب سرویس مربوطه رو صدا می زند). در صورتی که خروجی مورد نظر صحیح باشد، CallBack صدا زده می شد. و برنامه به فانکشن Main برمی گردد و Fun2 رو صدا می زند.

function Fun1(callback) { var url = &quotyour url&quot var parameters = ''; try { var result = CallWebService(url, parameters); if (result == 'success') callback(); else alert(&quotprocess faild&quot); } catch (e) { alert(&quoterror happend&quot); } }

فانکشن Fun2:

فانکشن Fun2 مثل یک فانکشن معمولی نوشته می شود و با توجه به خروجی سرویس، پیام مناسب را نمایش می دهد.

function Fun2() { var url = &quotyour url&quot var parameters = ''; try { var result = CallWebService(url, parameters); if (result == 'success') alert(&quotprocess success&quot); else alert(&quotprocess faild&quot); } catch (e) { alert(&quoterror happend&quot); } }


فانکشن CallWebService یک فانکشن ساده می باشد که سرویس مورد نظر را به صورت ajax صدا می زند.

function CallWebService(WebserviceUrl, Parameter) { var rst = null; try { var options = { type: &quotPOST&quot, url: WebserviceUrl, data: Parameter, contentType: &quotapplication/json; charset=utf-8&quot, dataType: &quotjson&quot, 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); }


امیدوارم مفید باشد.

با سپاس


برنامه نویسیjavascriptcallbackجاوا اسکریپت
گاه نوشته های یک برنامه نویس که دوست داره کارافرین بشه...
شاید از این پست‌ها خوشتان بیاید