दूसरी क्वेरी एसिंक्रोनस है इसलिए for
में इसे लपेटना काम नहीं करेगा।
response.success
दूसरी क्वेरी समाप्त होने से पहले ट्रिगर हो जाता है ताकि आप वास्तव में परिणामों की प्रतीक्षा करने से पहले लौट सकें। मैं आपको query2
के कॉलबैक के अंदर response.success
स्थानांतरित करने के लिए कहूंगा लेकिन यह तब तक काम नहीं करेगा जब आप for
के अंदर एक एसिंक ऑपरेशन सिंक्रनाइज़ेशन चला रहे हैं ताकि आप पहले success
में प्रतिक्रिया भेज सकें।
लूप के अंदर एसिंक ऑपरेशन न चलाएं। यह काम नहीं करता है।
मुझे यकीन नहीं है कि आप यहां क्या करने की कोशिश कर रहे हैं, लेकिन यदि आप परिणाम के रूप में कई प्रश्न पूछना चाहते हैं तो आपको प्रत्येक कॉल के लिए एक नया Query
तत्काल करना होगा।
फिर, मुझे यकीन है कि वास्तव में क्या आप क्या करने की कोशिश कर रहे हैं नहीं कर रहा हूँ, लेकिन यहाँ एक तरह से आप ऐसा ही कुछ कर सकते हैं:
मन में
var adList = [];
var query = new Parse.Query("Campaigns");
query.equalTo("isFeatured", true);
query.find({
success: function(results) {
var queries = [];
for (var i=0; i<results.length; i++){
var query2 = new Parse.Query("QR");
query2.equalTo("abc",true);
var ad = [];
ad.push(results[i].get("Type"));
ad.push(results[i].id);
adList.push(ad);
queries.push(query2);
}
var totalLength = results.length;
function makeQueries(qs){
qs.shift().first({
success: function(currentResult) {
// do stuff with currentResult
if(qs.length){
makeQueries(qs);
} else {
console.log('We successfully made ' + totalLength + ' queries')
// we are done with the queries
response.success(adList);
}
},
error: function() {
response.error('Error in inner queries nº' + totalLength - qs.length)
}
});
}
makeQueries(queries);
},
error: function(){
response.error("failed");
}
});
बार पार्स बादल कोड है कि आप के लिए कोड को चलाने aprox 5/7 सेकेंड और यदि आपके पास बहुत सारे results
हैं तो यह बहुत धीमा हो सकता है। बीटीडब्ल्यू, एक पार्स की matchesQuery
विधि देखें।
उदाहरण उनके डॉक्स से लिया:
var Post = Parse.Object.extend("Post");
var Comment = Parse.Object.extend("Comment");
var innerQuery = new Parse.Query(Post);
innerQuery.exists("image");
var query = new Parse.Query(Comment);
query.matchesQuery("post", innerQuery);
query.find({
success: function(comments) {
// comments now contains the comments for posts with images.
}
});
'matchQuery' के लिए +1! –