আমার কাছে একটি অ্যাপ্লিকেশন রয়েছে যার জন্য একটি নির্দিষ্ট ক্রমে ডেটা লোড করা দরকার: রুট ইউআরএল, স্কিমা, তারপরে অবশেষে বিভিন্ন ডেটা অবজেক্টের জন্য স্কিমাস এবং ইউআরএল দিয়ে অ্যাপ্লিকেশনটি আরম্ভ করুন। ব্যবহারকারী অ্যাপ্লিকেশন নেভিগেট করার সাথে সাথে ডেটা অবজেক্টগুলি লোড হয়, স্কিমার বিরুদ্ধে বৈধতা দেওয়া হয় এবং প্রদর্শিত হয়। ব্যবহারকারী ডেটা সিআরইউডি হিসাবে, স্কিমাগুলি প্রথম-পাসের বৈধতা সরবরাহ করে।
ইনিশিয়েশন নিয়ে আমার সমস্যা হচ্ছে। আমি রুট অবজেক্টটি আনতে একটি আজাক্স কল ব্যবহার করি। যখন (), এবং তারপরে প্রতিশ্রুতির একটি অ্যারে তৈরি করি, প্রতিটি স্কিমা অবজেক্টের জন্য একটি করে। ওই কাজগুলো. কনসোলে আনতে দেখছি।
আমি তখন সমস্ত স্কিমার জন্য আনয়নটি দেখতে পাচ্ছি, সুতরাং প্রতিটি each .ajax () কল কাজ করে। ফেচশেমাস () প্রকৃতপক্ষে প্রতিশ্রুতির একটি অ্যারে প্রদান করে।
যাইহোক, এই চূড়ান্ত যখন () ধারাটি কখনই জ্বলে না এবং কনসোলে কখনই "ডোন" শব্দটি উপস্থিত হয় না। Jquery-1.5 এর উত্স কোডটি বোঝা যাচ্ছে যে "নাল" $। কাছে যাওয়ার জন্য একটি অবজেক্ট হিসাবে গ্রহণযোগ্য w মধ্যে পাস
এটি Futures.js ব্যবহার করে কাজ করেছে। এটি পছন্দ না হলে কীভাবে jQuery ডিফার্ডগুলির একটি অ্যারে পরিচালনা করা উচিত?
var fetch_schemas, fetch_root;
fetch_schemas = function(schema_urls) {
var fetch_one = function(url) {
return $.ajax({
url: url,
data: {},
contentType: "application/json; charset=utf-8",
dataType: "json"
});
};
return $.map(schema_urls, fetch_one);
};
fetch_root = function() {
return $.ajax({
url: BASE_URL,
data: {},
contentType: "application/json; charset=utf-8",
dataType: "json"
});
};
$.when(fetch_root()).then(function(data) {
var promises = fetch_schemas(data.schema_urls);
$.when.apply(null, promises).then(function(schemas) {
console.log("DONE", this, schemas);
});
});