मैं घटनाओं की एक सरल श्रृंखला:चेन वादे
- एक मेटाडाटा तालिका में कॉलम जाओ (async)
- लोड चयनित स्तंभ (async)
- सूची प्रस्तुत करना
मैं केवल इन कार्यों को चेन करता था, प्रत्येक इसे पूरा होने पर अगली कॉलिंग करता था। हालांकि, यह बहुत स्पष्ट नहीं है कि क्या हो रहा है (getColumnsFromMeta
पर नज़र डालने के परिणामस्वरूप)। तो स्पष्टता और कोड पुन: उपयोग के हित में मैं JQuery
Promises
का उपयोग करके इन्हें दोबारा प्रतिक्रिया देना चाहता हूं। मैंने पहले वादे का इस्तेमाल किया है। लेकिन मैं दो से अधिक श्रृंखला कैसे करूं?
var getColumnsFromMeta = function(id)
{
var sql,
dfd;
dfd = $.Deferred();
var onSuccess = function(tx, result)
{
var columns = [];
for (var i = 0; i < result.rows.length; i++)
{
columns.push(result.rows.item(i).Column);
}
dfd.resolve(columns);
};
var onError = function(tx, error)
{
dfd.reject(error);
};
sql = "SELECT Column FROM Meta WHERE id = ?";
database.query(sql, [id], onSuccess, onError);
return dfd.promise();
};
त्वरित उत्तर के लिए धन्यवाद यह बहुत अच्छा काम करता है! और लेख के लिए धन्यवाद, यह अच्छा लग रहा है। एक अतिरिक्त प्रश्न के रूप में: क्या विभिन्न चरणों में पाइप पर .done/.always आदि को चेन करना संभव है? – JonWells
@CrimsonChin: हाँ। पीएस: मुझे एक सेकंड दें, jsfiddle एक पल में किया जाएगा – zerkms
@CrimsonChin: हाँ, आप उनमें से किसी भी का उपयोग कर सकते हैं, जब तक कि 'पाइप() 'रिटर्न स्थगित हो। पीएस: मैंने जोड़ा jsfiddle उदाहरण – zerkms