2013-05-14 5 views
12

मैं Q वादा पुस्तकालय का उपयोग कर रहा हूं। मेरा कोड इस तथ्य पर निर्भर करता है कि एक ही वादे के लिए कॉलबैक उसी क्रम में निष्पादित किए जाते हैं जैसे वे पंजीकृत थे।क्यू वादा: पंजीकृत के रूप में उसी क्रम में कॉलबैक बुलाए गए हैं?

http://jsfiddle.net/HgYtK/1/

var deferred = Q.defer(); 
var promise = deferred.promise; 

['first', 'second', 'third'].forEach(function (position) { 
    promise.then(function() { 
    alert(position); 
    }); 
}); 

deferred.resolve(); 

यह सही परिणाम का उत्पादन करता है, लेकिन अगर यह कल्पना या एक सुखद संयोग है कि रेखा के नीचे टूट सकता का हिस्सा है मैं नहीं जानता।

उत्तर

11

Promises/A+ Spec

2.2.6.1

से हैं/जब promise पूरी हो जाती है, संबंधित onFulfilled कॉलबैक उनके उद्भव के क्रम में अमल करना चाहिए then को कहता है।

+4

वास्तव में, नाम 'क्यू' जानबूझकर तात्पर्य है कि यह एक घटना * कतार * के लिए एक इंटरफ़ेस है। –

संबंधित मुद्दे