मुझे 12 महीने का चार्ट बनाना है। बाकी एपीआई से मुझे हर महीने का डेटा मिलता है। तो यह मैं क्या करता हूँ

$.getJSON(link, function(data){
  // store data in a variable
}
x 12 times to get 12 variable

window.onload = function(){
  // draw chart using CanvasJS, using 12 variable above 
}

लेकिन मुझे जो मिलता है वह कुछ बिंदु (कुछ महीने) होता है, बाकी एपीआई डेटा प्राप्त करने में काफी लंबा समय लेता है -> चार्ट अपरिभाषित मूल्य के साथ आकर्षित होगा -> ग्राफ में कुछ महीने नहीं होंगे।

कोई सुझाव देता है कि इसे कैसे ठीक किया जाए ??

0
Jake Lam 11 अक्टूबर 2017, 06:07
आप शायद इसके लिए वादों का इस्तेमाल करना चाहेंगे।
 – 
P Ackerman
11 अक्टूबर 2017, 06:11
1
बस अपना ड्रा लॉजिक getJSON सक्सेस कॉलबैक के अंदर रखें।
 – 
dhilt
11 अक्टूबर 2017, 06:12

2 जवाब

ऐसा लगता है कि आप 12 अलग-अलग एपीआई कॉल कर रहे हैं, और सब कुछ पूरा हो जाने के बाद आप कैनवास को इकट्ठा करना चाहते हैं।

आप अलग-अलग कॉल करना चाहेंगे और उन्हें promises नामक सरणी में संग्रहित करना चाहेंगे।

var promise1 = $.getJSON(link);
//... x 12
var promises = [promise1, promise2, promise3, //..etc];

फिर आप $.when का उपयोग उन सभी के हल होने की प्रतीक्षा करने के लिए करेंगे।

$.when.apply($, promises).then(function(allMyData) {
     //make my canvas here
}, function(e) {
     console.log("My ajax failed");
});

आपके द्वारा अपने AJAX कॉलबैक में सामान्य रूप से पुनर्प्राप्त किए जाने वाले सभी डेटा को अब allMyData के रूप में एक्सेस किया जाना चाहिए, प्रत्येक प्रतिक्रिया की एक सरणी।

1
P Ackerman 11 अक्टूबर 2017, 06:19
क्या आप allMyData चर के बारे में अधिक बता सकते हैं, इसका उपयोग कैसे करें मैं काफी उलझन में हूं
 – 
Jake Lam
11 अक्टूबर 2017, 09:50
$.getJSON(link, function(data){}. इस कॉलबैक में data चर, जब आप $.getJSON(link); कॉल की सरणी पर $.when.apply का उपयोग करते हैं, तो allMyData सरणी का एक तत्व बन जाता है।
 – 
P Ackerman
11 अक्टूबर 2017, 16:55
तो allMyData [promise1, promise2, promise3, //..etc]; का परिणाम [data1, data2, data3, ..etc] होगा
 – 
P Ackerman
11 अक्टूबर 2017, 16:56

डेटा संख्या परिवर्तन को रिकॉर्ड करने के लिए दो चर सेट करें, और जांचें कि संग्रहीत डेटा की संख्या आपके लिए आवश्यक डेटा संख्या से मेल खा रही है या नहीं, यदि ऐसा है, तो चार्ट बनाएं।

var totalDataNumber = 12;
var storedDataNumber = 0;

$.getJSON(link, function(data){
  // store data in a variable
  storedDataNumber++;
  // check if all data are ready
  if (storedDataNumber === totalDataNumber) {
    draw();
  }
}
// x 12 times to get 12 variable

function draw() {

  // draw chart using CanvasJS, using 12 variable above 
}
0
Rex Hsu 11 अक्टूबर 2017, 06:24