PDA

View Full Version : راهنمایی برای مدیریت درخواست های Ajax



saeedtrb
پنج شنبه 31 اردیبهشت 1394, 18:55 عصر
سلام دوستان فرض کنید ما یه سری کلاس هایی داریم که داخل این کلاس ها قراره یک درخواست به سرور ارسال کنه و نتیجه رو در یک خصوصیتش ذخیره کنه و بعد از ایجاد کلاس از اون خصوصیت استفاده بشه مشکل اینجا که هنوز جواب اون درخواست برنگشته و مقداری برای خصوصیت مورد نظر ست نشده که ادامه دستورات اجرا می شه و اون خصوصیت رو خالی می شناسه برای بهتر متوجه شدن منظورم یه نمونه کد آماده کردم براتون می زارم ببینید.
function Test(){ this.html = this.sendRequest('home/index.tpl');
}
Test.prototype.sendRequest = function( url ) {
var request = new XMLHttpRequest();
request.open( 'GET' , url , false);
request.send( null );
return request.responseText;
};
test = new Test();
console.log( test.html );
حالا به نظرتون چیکار کنم که دیگه با این دسته از مشکلات روبرو نشم؟

cups_of_java
جمعه 01 خرداد 1394, 14:17 عصر
شما باید این کار رو در کال بک تون انجام بدید
اصولن در این مواقع از پرامیس ه (https://www.promisejs.org)ا استفاده میکنن مثلن از این کتابخونه (https://github.com/petkaantonov/bluebird#browsers)

saeedtrb
جمعه 01 خرداد 1394, 20:27 عصر
بنا به دلایلی از روش callback نمی تونم برای پیاده سازی این بخش استفاده کنم،می خواستم بدونم روش دیگه ایی هست که بشه همچین کاری کرد مثلاً خود شی XMLHttpRequest دستورات بعد send زمانی اجرا می شن که جواب درخواست برگشت داده شده

arenaw
سه شنبه 05 خرداد 1394, 10:30 صبح
می خواستم بدونم روش دیگه ایی هست که بشه همچین کاری کرد مثلاً خود شی XMLHttpRequest دستورات بعد send زمانی اجرا می شن که جواب درخواست برگشت داده شده
پارامتر سوم متود .open() شما async رو false قرار دادین. یعنی اینکه تا زمانی که جواب درخواست نیومده، کامپایلر جاوااسکریپت منتظر بمونه. یعنی کدتون درسته.

تست هم گرفتم ازش:
131668

پ.ن : توی صفحه index.html با کد شما یه رکوئست میفرستم به صفحه a.php و میگم بعد از اینکه جوابش رو لاگ کردی، یه لاگ دیگه (finished) بنویس.
توی صفحه a.php هم میگم هر درخواست رو اول ۵ ثانیه معطل کن، بعد بهش بگو salam!