ورود

View Full Version : سوال: مشکل در اجرای خطی جاوا اسکریپت برای کمبو باکس ها



rezaei manesh
سه شنبه 09 اردیبهشت 1399, 17:57 عصر
سلام و عرض ادب
من می خوام که 3 تا تابع که هر کدوم وظیفه گرفتن اطلاعات از سرور و پر کردن اون رو تو کمبو باکس خودشون رو دارن اجرا شد و هر 3 تا تموم شد بعد خطوط بعدی که شامل نمایش اطلاعات فرم هست نشون داده بشه
کد زیر من گاهی درست کار می کنه کاهی بعضی از کمبو باکس ها رو پر نمی کنه دلیلش هم همون اجرای خطی تو جاوا اسکریپت هست لطفا یک روش پیشنهاد بدین که خطوط 4 به بعد منتظر اجرای کامل 3 خط اول بمونن
ممنونم


FillCmbCountry();
FillCmbEnvironmentFactorsId();
FillCmbTypIE(0);

var idRow = $("#idRow").val();

var datavalue = "{idRow: " + idRow + " }";
$.ajax({
type: "POST",
url: MyRootPath + "/Admin/AdAjax/Aj_Test.aspx/GetInfoById",
data: datavalue,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
var JTemp = jQuery.parseJSON(data.d);
$.each(JTemp.ListTest, function (index, obj) {
$("#CountryID").val(obj.CountryID);
//...
TypIEchange();
});

}
});

plague
سه شنبه 09 اردیبهشت 1399, 19:42 عصر
این قسمت رو بزار توی یه فانکش



var idRow = $("#idRow").val();

var datavalue = "{idRow: " + idRow + " }";
$.ajax({
type: "POST",
url: MyRootPath + "/Admin/AdAjax/Aj_Test.aspx/GetInfoById",
data: datavalue,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
var JTemp = jQuery.parseJSON(data.d);
$.each(JTemp.ListTest, function (index, obj) {
$("#CountryID").val(obj.CountryID);
//...
TypIEchange();
});

}
});

بعد توی فانکش FillCmbTypIE وقتی کارش تمام شد صداش کن


اگه بخای روش حرفه ای تر بکار ببری میتونی از Promise و async/await استفاده کنی


https://jsfiddle.net/g1mf9q2r/

ولی خب در هر صورت نیاز داری اون کدای پایین رو بریزی توی یک فانکشن که بتونی اجراشون رو کنترل کنی