Q



q

Q

वादा विधि

अधिकांश वादे विधियों में मुख्य Q ऑब्जेक्ट पर "स्थिर" समकक्ष होते हैं, जो या तो एक वादा या गैर-वादा स्वीकार करेंगे, और बाद के मामले में पहले एक पूर्ण वादा तैयार करेंगे। उदाहरण के लिए, Q.when(5, onFulfilled) Q(5).then(onFulfilled) बराबर है Q(5).then(onFulfilled) । अन्य सभी के पास स्थिर समकक्ष हैं जिन्हें वादा विधि के समान नाम दिया गया है।

कुछ विधियों को जावास्क्रिप्ट आरक्षित शब्दों के समान नाम दिया जाता है, जैसे try , catch , और finally । यह मानक सिंक्रोनस भाषा संरचनाओं और असीमित वादा संचालन के बीच बहुत स्पष्ट समानांतर दिखाने में मदद करता है। हालांकि, संपत्ति नामों के रूप में शब्दों का उपयोग केवल जावास्क्रिप्ट भाषा के ईसीएमएस्क्रिप्ट 5 संस्करण के रूप में समर्थित है, जो आईई 8, सफारी 5, एंड्रॉइड 2.2, या फैंटॉमजेएस 1.8 जैसे कुछ पुराने ब्राउज़र में लागू नहीं किया गया है। यदि आप उन ब्राउज़रों को लक्षित कर रहे हैं, और कॉफीस्क्रिप्ट जैसी भाषा का उपयोग नहीं कर रहे हैं जो आपके लिए इसका ख्याल रखता है, तो इसके उपनामों का उपयोग करें, या उन्हें Q["try"](...) या promise["catch"](...)

कोर वादा विधि

वादा। फिर (पूरा, ऑनरजेक्टेड, ऑन प्रोग्रेस)

एक अतिरिक्त प्रगति हैंडलर के साथ वादा / ए + विनिर्देश से then विधि।

promise.catch (onRejected)

उपनाम: promise.fail (गैर-ईएस 5 ब्राउज़र के लिए)

एक चीनी विधि, promise.then(undefined, onRejected) बराबर। promise.then(undefined, onRejected)

promise.progress (onProgress)

बहिष्कृत: promise.observeEstimate .observe promise.observeEstimate या एक समान इंटरफ़ेस इस विधि को संस्करण 2 में बदलने के कारण है। प्रगति अच्छी तरह से तैयार नहीं होती है। https://github.com/kriskowal/gtor#progress-and-estimated-time-to-completion

promise.then(undefined, undefined, onProgress) बराबर एक चीनी विधि। फिर promise.then(undefined, undefined, onProgress)onProgress हैंडलर को ऐसे onProgress प्राप्त होते हैं जो इस वचन में या तो संबंधित स्थगित की notify विधि से या वादे से भेजे गए थे कि यह वचन एक हैंडलर से लौटने के आधार पर बन गया था।

promise.finally (कॉलबैक)

उपनाम: promise.fin (गैर-ईएस 5 ब्राउज़र के लिए)

finally खंड की तरह, आप या तो वादे की पूर्ति या अस्वीकृति को देखने की अनुमति देते हैं, लेकिन अंतिम मूल्य को संशोधित किए बिना ऐसा करने के लिए। संसाधनों को इकट्ठा करने के लिए यह उपयोगी है कि कोई नौकरी सफल हुई है, जैसे कि डेटाबेस कनेक्शन बंद करना, सर्वर को बंद करना, या किसी ऑब्जेक्ट से अनइडेड कुंजी को हटाना।

finally एक वादा वापस finally देता है, जो वही पूर्ति मूल्य या अस्वीकृति के कारण के साथ अस्वीकार कर promise । हालांकि, अगर callback एक वादा करता है, तो लौटाए गए वादे का संकल्प तब तक देरी होगी जब तक कि callback से वापस आने वाले वादे समाप्त नहीं हो जाते। इसके अलावा, अगर लौटा वादा अस्वीकार करता है, तो अस्वीकृति पिछले परिणाम की बजाय श्रृंखला को पारित कर दी जाएगी।

वचन.done (पूरा, ऑनरजेक्टेड, ऑन प्रोग्रेस)

then बहुत पसंद है, लेकिन अनचाहे अस्वीकृति के आसपास विभिन्न व्यवहार के साथ। यदि कोई onRejected अस्वीकृति है, या तो क्योंकि promise खारिज कर दिया गया है और कोई भी onRejected कॉलबैक प्रदान नहीं किया गया था, या क्योंकि onFulfilled या onRejected - onRejected ने एक त्रुटि फेंक onFulfilled या अस्वीकार कर दिया, परिणामस्वरूप अस्वीकृति कारण घटना लूप के भविष्य में एक अपवाद के रूप में फेंक दिया गया है ।

इस विधि का प्रयोग ऐसे वादों की श्रृंखला को समाप्त करने के लिए किया जाना चाहिए जो कहीं और पारित नहीं किए जाएंगे। चूंकि कॉलबैक में फेंकने वाले अपवादों का उपभोग किया जाता है और रिजेक्शन में बदल दिया जाता है, इसलिए श्रृंखला के अंत में अपवाद गलती से आसान होते हैं, चुपचाप अनदेखा करते हैं। इवेंट लूप की भविष्य की बारी में फेंकने के अपवाद की व्यवस्था करके, ताकि इसे पकड़ा नहीं जा सके, यह ब्राउज़र window पर एक onerror घटना का कारण बनता है, या नोड.जेएस की process ऑब्जेक्ट पर एक uncaughtException घटना का कारण बनता है।

Q.longStackSupport true सेट होने पर done गए अपवादों के लंबे ढेर निशान Q.longStackSupport । यदि Q.onerror सेट किया गया है, तो भविष्य की बारी में फेंकने के बजाय अपवाद वितरित किए जाएंगे।

बनाम बनाम गोल्डन नियम then उपयोग है: या तो किसी और को अपना वादा return कर दें, या यदि श्रृंखला आपके साथ समाप्त हो जाती है, तो इसे समाप्त करने के लिए कॉल करें। catch साथ समाप्त करना पर्याप्त नहीं है क्योंकि कैच हैंडलर स्वयं ही एक त्रुटि फेंक सकता है।

वादा-के-ऑब्जेक्ट तरीके

promise.get (प्रॉपर्टी)

किसी ऑब्जेक्ट की नामित संपत्ति प्राप्त करने का वादा करता है। अनिवार्य रूप से समकक्ष

promise.then(function (o) {
  return o[propertyName];
});

promise.post (methodName, args)

प्रायोगिक उपनाम : promise.mapply

किसी ऑब्जेक्ट की नामित विधि को तर्क के दिए गए सरणी के साथ कॉल करने के परिणाम के लिए एक वादा देता है। ऑब्जेक्ट स्वयं फ़ंक्शन में है, बस सिंक्रोनस विधि कॉल की तरह। अनिवार्य रूप से समकक्ष

promise.then(function (o) {
  return o[methodName].apply(o, args);
});

promise.invoke (methodName, ... args)

उपनाम: promise.send

प्रायोगिक उपनाम : promise.mcall

किसी ऑब्जेक्ट की नामित विधि को दिए गए वैरिएडिक तर्कों के साथ कॉल करने के परिणाम के लिए एक वादा देता है। ऑब्जेक्ट स्वयं फ़ंक्शन में है, बस सिंक्रोनस विधि कॉल की तरह।

promise.keys ()

ऑब्जेक्ट के संपत्ति नामों की सरणी के लिए एक वादा देता है। अनिवार्य रूप से समकक्ष

promise.then(function (o) {
  return Object.keys(o);
});

वादा-के-फ़ंक्शन विधि

वादा.फिंद (... तर्क) (बहिष्कृत)

एक नया फ़ंक्शन देता है जो फ़ंक्शन को दिए गए वैरिएडिक तर्कों के साथ असीमित रूप से कॉल करता है, और एक वादा देता है। विशेष रूप से, किसी भी सिंक्रोनस रिटर्न वैल्यू या फेंक दिए गए अपवाद क्रमशः पूर्ण मूल्यों में या इस नए फ़ंक्शन द्वारा दिए गए वादे के अस्वीकृति कारणों में परिवर्तित हो जाते हैं।

यह विधि विशेष रूप से असंगत हैं, यह सुनिश्चित करने के लिए कि वे हमेशा असीमित होते हैं, और यह कि किसी भी फेंकने वाले अपवाद (जानबूझकर या आकस्मिक) को लौटाए गए अस्वीकार वादे में परिवर्तित कर दिया जाता है, यह सुनिश्चित करने के लिए कार्यों को लपेटने के लिए अपने स्थिर रूप में विशेष रूप से उपयोगी होता है। उदाहरण के लिए:

var getUserData = Q.fbind(function (userName) {
  if (!userName) {
    throw new Error("userName must be truthy!");
  }

  if (localCache.has(userName)) {
    return localCache.get(userName);
  }

  return getUserFromCloud(userName);
});

promise.fapply (args)

तर्कों के दिए गए सरणी के साथ फ़ंक्शन को कॉल करने के परिणाम के लिए एक वादा देता है। अनिवार्य रूप से समकक्ष

promise.then(function (f) {
  return f.apply(undefined, args);
});

ध्यान दें कि इसके परिणामस्वरूप समान वापसी मूल्य / फेंक दिया गया अपवाद अनुवाद होगा जैसा कि ऊपर fbind

promise.fcall (... args)

स्टेटिक उपनाम: Q.try (केवल Q.try ब्राउज़र)

दिए गए वैरिएडिक तर्कों के साथ फ़ंक्शन को कॉल करने के परिणाम के लिए एक वादा देता है। fbind लिए उपरोक्त समझाया गया वही वापसी मूल्य / फेंक दिया अपवाद अनुवाद है।

अपने स्थिर रूप में, यह Q.try रूप में Q.try , क्योंकि इसमें एक try ब्लॉक के समान अर्थशास्त्र है (लेकिन सिंक्रोनस अपवाद और Q.try दोनों को संभालने)। यह कोड की तरह अनुमति देता है

Q
.try(function () {
  if (!isConnectedToCloud()) {
    throw new Error("The cloud is down!");
  }

  return syncToCloud();
})
.catch(function (error) {
  console.error("Couldn't sync to the cloud", error);
});

वादा के लिए वादे के तरीके

promise.all ()

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

इस विधि को अक्सर कई स्थिर संचालन निष्पादित करने के लिए वादे के सरणी पर अपने स्थिर रूप में प्रयोग किया जाता है और जब वे सभी सफल होते हैं तो अधिसूचित किया जाता है। उदाहरण के लिए:

Q.all([getFromDisk(), getFromCloud()]).done(function (values) {
  assert(values[0] === values[1]); // values[0] is fromDisk and values[1] is fromCloud
});

promise.allSettled ()

वादा राज्य स्नैपशॉट की एक सरणी के साथ पूरा किया गया एक वादा देता है, लेकिन केवल सभी मूल वादों के निपटारे के बाद, यानी पूर्ण या अस्वीकार हो जाता है।

सफलता या विफलता के बावजूद, इस विधि को अक्सर कई परिचालनों को निष्पादित करने के लिए वादे के सरणी पर अपने स्थिर रूप में उपयोग किया जाता है और जब वे सभी खत्म होते हैं तो अधिसूचित किया जाता है। उदाहरण के लिए:

Q.allSettled([saveToDisk(), saveToCloud()]).spread(function (disk, cloud) {
  console.log("saved to disk:", disk.state === "fulfilled");
  console.log("saved to cloud:", cloud.state === "fulfilled");
}).done();

राज्य स्नैपशॉट उसी रूप में होंगे जैसा promise.inspect माध्यम से प्राप्त किया गया है। यानी { state: "fulfilled", value: v } या { state: "rejected", reason: r }

वादा। स्प्रेड (पूरा, ऑनरजेक्टेड)

then तरह, लेकिन सरणी को एक विविधता पूर्ति हैंडलर में "फैलता है"। यदि सरणी में से किसी भी वादे को खारिज कर दिया जाता है, तो इसके बजाय पहले अस्वीकार किए गए वादे के अस्वीकृति कारण के साथ अस्वीकार कर दिया जाता है।

यह विशेष रूप से all के साथ संयोजन में उपयोगी है, उदाहरण के लिए:

Q.all([getFromDisk(), getFromCloud()]).spread(function (diskVal, cloudVal) {
  assert(diskVal === cloudVal);
}).done();

उपयोगिता के तरीके

promise.thenResolve (मान)

कोई स्टेटिक काउंटरपार्ट नहीं

promise.then(function () { return value; }) समतुल्य एक चीनी विधि। फिर promise.then(function () { return value; })

promise.thenReject (कारण)

कोई स्टेटिक काउंटरपार्ट नहीं

promise.then(function () { throw reason; }) बराबर एक चीनी विधि। promise.then(function () { throw reason; })

promise.tap (onFulfilled)

संस्करण 1.1.0 (नवंबर 2014) में पेश किया गया

एक हैंडलर को जोड़ता है जो पूरा होने पर वादे के मूल्य का पालन करेगा, उसी मूल्य के लिए एक वादा वापस कर देगा, शायद स्थगित हो गया है लेकिन onFulfilled हैंडलर द्वारा दिए गए वादे से प्रतिस्थापित नहीं किया गया है।

Q("Hello, World!")
.delay(1000)
.tap(console.log)
.then(function (message) {
  expect(message).toBe("Hello, World!");
})

वादा। टाइमआउट (एमएस, संदेश)

वादा के समान परिणाम होगा, सिवाय इसके कि यदि ms मिलीसेकंड से पहले promise पूरा नहीं हुआ है या अस्वीकार कर दिया गया है, तो दिया गया वादा दिया गया message साथ एक Error साथ खारिज कर दिया जाएगा। अगर message की आपूर्ति नहीं की जाती है, तो संदेश "Timed out after " + ms + " ms" हो जाएगा "Timed out after " + ms + " ms"

promise.timeout(10000).then(
  function (result) {
  // will be called if the promise resolves normally
  console.log(result);
  },
  function (err) {
  // will be called if the promise is rejected, or the 10 second timeout occurs
  console.log(err);
  }
);

promise.delay (एमएस)

वादा करता है कि वादा के समान परिणाम होगा, लेकिन कम से कम ms मिलीसेकंड पास होने के बाद ही पूरा हो जाएगा। अगर promise खारिज कर दिया जाता है, तो परिणामस्वरूप वादा तुरंत खारिज कर दिया जाएगा।

Q.delay (एमएस)

यदि Q.delay का स्थिर संस्करण केवल एक ही तर्क पारित किया जाता है, तो यह एक वादा देता है जो कम से कम ms मिलीसेकंड पास होने के बाद undefined साथ पूरा किया जाएगा। (यदि इसे दो तर्कों के साथ बुलाया जाता है, तो यह सामान्य स्थैतिक-समकक्ष अनुवाद का उपयोग करता है, यानी Q.delay(value, ms) Q(value).delay(ms) बराबर है।)

यह एक वादा श्रृंखला में देरी डालने का एक सुविधाजनक तरीका है, या यहां तक ​​कि बस setTimeout लिए एक अच्छा सिंटैक्स प्राप्त करने के लिए:

Q.delay(150).then(doSomething);

राज्य निरीक्षण के तरीके

promise.isFulfilled ()

वापस देता है कि दिया गया वादा पूर्ण राज्य में है या नहीं। जब गैर-वादे पर स्थिर संस्करण का उपयोग किया जाता है, तो परिणाम हमेशा true होता true

promise.isRejected ()

लौटाता है कि दिया गया वादा अस्वीकृत राज्य में है या नहीं। जब गैर-वादों पर स्थिर संस्करण का उपयोग किया जाता है, तो परिणाम हमेशा false

promise.isPending ()

वापस दिया गया है कि दिया गया वचन लंबित राज्य में है या नहीं। जब गैर-वादों पर स्थिर संस्करण का उपयोग किया जाता है, तो परिणाम हमेशा false

promise.inspect ()

एक "राज्य स्नैपशॉट" ऑब्जेक्ट देता है, जो तीन रूपों में से एक में होगा:

  • { state: "pending" }
  • { state: "fulfilled", value: <fulfllment value> }
  • { state: "rejected", reason: <rejection reason> }

वादा निर्माण

Q.defer ()

एक "स्थगित" ऑब्जेक्ट को एक के साथ देता है:

  • promise संपत्ति
  • resolve(value) विधि
  • reject(reason) विधि
  • notify(value) विधि
  • makeNodeResolver() विधि

resolve और reject विधियां promise संपत्ति की स्थिति को नियंत्रित करती हैं, जिसे आप अपने राज्य को संशोधित करने के लिए प्राधिकारी को रखते हुए दूसरों को सौंप सकते हैं। notify विधि प्रगति अधिसूचना के लिए है, और makeNodeResolver विधि Node.js के साथ इंटरफेसिंग के लिए है (नीचे देखें)।

सभी मामलों में जहां एक वादा हल किया जाता है (यानी या तो पूर्ण या अस्वीकार), संकल्प स्थायी है और इसे रीसेट नहीं किया जा सकता है। अगर promise पहले ही हल हो चुका है, तो उसे resolve , reject resolve या notify करने का प्रयास करने का प्रयास नहीं किया जाएगा।

निराश ठंडा हैं क्योंकि वे वादे भाग को संकल्पक भाग से अलग करते हैं। इसलिए:

  • आप किसी भी उपभोक्ताओं को वादा दे सकते हैं और वे सभी स्वतंत्र रूप से संकल्प का पालन करेंगे। क्योंकि वादे को देखने की क्षमता वादे को हल करने की क्षमता से अलग होती है, वादे के प्राप्तकर्ताओं में से कोई भी अन्य प्राप्तकर्ताओं को गलतफहमी के साथ "चाल" करने की क्षमता नहीं देता है (या वास्तव में किसी भी तरह से हस्तक्षेप करता है)।

  • आप किसी भी निर्माता को संकल्पकर्ता दे सकते हैं और जो कोई भी वादा करता है वह पहले जीतता है। इसके अलावा, कोई भी उत्पादक यह नहीं देख सकता कि वे तब तक खो गए जब तक कि आप उन्हें वादा हिस्सा भी न दें।

deferred.resolve (मान)

एक लंबित वादे के साथ resolve कारण पारित वादे पर इंतजार करने का वादा करता है, इसके पूर्णता मूल्य के साथ पूरा हो जाता है या इसके अस्वीकृति कारण से खारिज कर दिया जाता है (या पारित वचन के लिए हमेशा के लिए लंबित रहना)।

एक खारिज वादे के साथ resolve कारण पारित वादे के अस्वीकृति कारण से खारिज करने का वादा करता है।

एक पूर्ण वादे के साथ resolve कारण पारित वादे के पूर्ति मूल्य के साथ पूरा होने का वादा करता है।

गैर-वादे मूल्य के साथ कॉलिंग को resolve से उस मूल्य के साथ पूरा होने का promise होता है।

deferred.reject (कारण)

किसी कारण से अस्वीकार करने का कारण उस कारण से अस्वीकार करने का promise है।

deferred.notify (मान)

किसी मूल्य के साथ notify कॉलिंग उस मूल्य के साथ प्रगति की अधिसूचना देने का promise है। यही है, वादे से व्युत्पन्न promise या वादे के साथ पंजीकृत किसी भी onProgress हैंडलर को प्रगति मूल्य के साथ बुलाया जाएगा।

क्यू वस्तु

क्यू (मान)

यदि value एक क्यू वादा है, तो वादा वापस कर देता है।

यदि value किसी अन्य पुस्तकालय से एक वादा है तो इसे एक क्यू वादे (जहां संभव हो) में शामिल किया जाता है।

यदि value एक वादा नहीं है, तो वह वचन देता है जो value साथ पूरा होता है।

Q.reject (कारण)

एक वादा देता है जो reason से खारिज कर दिया जाता reason

Q.Promise (समाधानकर्ता)

सिंक्रनाइज़ रूप से resolver(resolve, reject, notify) कॉल resolver(resolve, reject, notify) और एक वादा देता है जिसका राज्य resolver को पारित कार्यों द्वारा नियंत्रित होता है। यह एक वैकल्पिक वादा-निर्माण API है जिसमें स्थगित अवधारणा के समान शक्ति है, लेकिन एक और वैचारिक इकाई को पेश किए बिना।

यदि resolver अपवाद फेंकता है, तो लौटाया गया वादा अस्वीकार कारण के रूप में उस अपवाद के साथ खारिज कर दिया जाएगा।

नोट : नवीनतम जिथब में, इस विधि को Q.Promise कहा जाता है, लेकिन यदि आप npm पैकेज संस्करण 0.9.7 या उससे नीचे का उपयोग कर रहे हैं, तो विधि Q.promise (लोअरकेस बनाम अपरकेस पी) कहा जाता है।

Node.js कॉलबैक के साथ इंटरफेसिंग

क्यू Node.js शैली (err, result) कॉलबैक एपीआई के साथ इंटरफेसिंग के लिए कई फ़ंक्शन प्रदान करता है।

इनमें से कई आमतौर पर अपने स्थिर रूप में उपयोग किए जाते हैं, और इस प्रकार यहां सूचीबद्ध हैं। फिर भी, वे प्रत्येक क्यू वादे पर भी मौजूद हैं, अगर आपको किसी नोड.जेएस-स्टाइल फ़ंक्शन के लिए या ऑब्जेक्ट के लिए नोड.जेएस-स्टाइल विधियों के साथ वादा किया गया है।

ध्यान दें कि यदि कोई नोड.जेएस-स्टाइल एपीआई एक से अधिक गैर-त्रुटि पैरामीटर (जैसे child_process.execFile ) के साथ वापस कॉल करता है, तो क्यू पैकेज को अनुवाद करते समय वादे के पूर्ति मूल्य के रूप में एक सरणी में संकुल करता है।

Q.nfbind (nodeFunc, ... args)

उपनाम : Q.denodeify

एक नोड.जेएस-स्टाइल फ़ंक्शन से एक वादे-रिटर्निंग फ़ंक्शन बनाता है, वैकल्पिक रूप से दिए गए वैरिएडिक तर्कों के साथ बाध्यकारी बनाता है। एक उदाहरण:

var readFile = Q.nfbind(FS.readFile);

readFile("foo.txt", "utf-8").done(function (text) {

});

ध्यान दें कि यदि आपके पास कोई तरीका है जो Node.js कॉलबैक पैटर्न का उपयोग करता है, केवल एक फ़ंक्शन के विपरीत, आपको इसे nfbind जाने से पहले this मान को nfbind , जैसे:

var Kitty = mongoose.model("Kitty");
var findKitties = Q.nfbind(Kitty.find.bind(Kitty));

तरीकों के लिए बेहतर रणनीति Q.nbind का उपयोग करना होगा, जैसा कि नीचे दिखाया गया है।

Q.nbind (nodeMethod, thisArg, ... args)

एक नोड.जेएस-स्टाइल विधि से एक वादा-वापसी समारोह बनाता है, वैकल्पिक रूप से दिए गए वैरिएडिक तर्कों के साथ बाध्यकारी बनाता है। एक उदाहरण:

var Kitty = mongoose.model("Kitty");
var findKitties = Q.nbind(Kitty.find, Kitty);

findKitties({ cute: true }).done(function (theKitties) {

});

Q.nfapply (nodeFunc, args)

नोड.जेएस-स्टाइल फ़ंक्शन को तर्कों के दिए गए सरणी के साथ कॉल करता है, जो नोड.जेएस फ़ंक्शन परिणाम के साथ वापस कॉल करता है या अस्वीकार कर देता है, या अगर यह किसी त्रुटि के साथ वापस कॉल करता है (या एक सिंक्रनाइज़ फेंकता है) तो एक वादा वापस कर देता है। एक उदाहरण:

Q.nfapply(FS.readFile, ["foo.txt", "utf-8"]).done(function (text) {
});

ध्यान दें कि यह उदाहरण केवल काम करता है क्योंकि FS.readFile एक मॉड्यूल से निर्यात किया गया फ़ंक्शन है , ऑब्जेक्ट पर कोई विधि नहीं। विधियों के लिए, उदाहरण के लिए redisClient.get , आपको Q.nfapply (या, आमतौर पर, किसी फ़ंक्शन कॉल के लिए तर्क के रूप में) को पास करने से पहले किसी विधि को विधि को बाध्य करना होगा:

Q.nfapply(redisClient.get.bind(redisClient), ["user:1:id"]).done(function (user) {
});

विधियों के लिए बेहतर रणनीति Q.npost का उपयोग करना होगा, जैसा कि नीचे दिखाया गया है।

Q.nfcall (func, ... args)

दिए गए वैरिएडिक तर्कों के साथ एक नोड.जेएस-स्टाइल फ़ंक्शन को कॉल करता है, जो नोड.जेएस फ़ंक्शन परिणाम के साथ वापस कॉल करता है या अस्वीकार कर देता है, या अगर यह किसी त्रुटि के साथ वापस कॉल करता है (या एक सिंक्रनाइज़ फेंकता है) तो एक वादा वापस कर देता है। एक उदाहरण:

Q.nfcall(FS.readFile, "foo.txt", "utf-8").done(function (text) {
});

कार्यों बनाम विधियों के बारे में एक ही चेतावनी nfcall लिए लागू होती है क्योंकि यह nfapply लिए करता है। इस मामले में, Q.ninvoke का उपयोग करना बेहतर रणनीति होगी।

Q.npost (ऑब्जेक्ट, methodName, args)

बहिष्कृत उपनाम : Q.nmapply

दिए गए तर्कों के सरणी के साथ एक नोड.जेएस-शैली विधि को कॉल करता है, यदि कोई परिणाम परिणाम के साथ वापस कॉल करता है, या किसी त्रुटि के साथ वापस कॉल करता है (या एक सिंक्रनाइज़ फेंकता है) तो एक वादा वापस लौटाता है। एक उदाहरण:

Q.npost(redisClient, "get", ["user:1:id"]).done(function (user) {
});

Q.ninvoke (ऑब्जेक्ट, methodName, ... args)

उपनाम: Q.nsend

बहिष्कृत उपनाम : Q.nmcall

दिए गए वैरैडिक तर्कों के साथ एक नोड.जेएस-स्टाइल विधि को कॉल करता है, यदि कोई परिणाम किसी परिणाम के साथ वापस कॉल करता है या अस्वीकार कर देता है, तो उसे एक त्रुटि वापस लौटाता है (या एक सिंक्रनाइज़ फेंकता है)। एक उदाहरण:

Q.ninvoke(redisClient, "get", "user:1:id").done(function (user) {
});

promise.nodeify (कॉलबैक)

यदि callback एक फ़ंक्शन है, तो मान लें कि यह एक नोड.जेएस-स्टाइल कॉलबैक है, और जब इसे promise जाता है, तो callback(null, fulfillmentValue) रूप में या callback(rejectionReason) callback(null, fulfillmentValue) रूप में callback(rejectionReason) रूप में कॉल promise है। यदि callback फ़ंक्शन नहीं है, तो बस promise

यह विधि दोहरी वादा / कॉलबैक एपीआई बनाने के लिए उपयोगी है, यानी एपीआई जो वादे वापस करती हैं लेकिन नोड.जेएस-स्टाइल कॉलबैक भी स्वीकार करती हैं। उदाहरण के लिए:

function createUser(userName, userData, callback) {
  return database.ensureUserNameNotTaken(userName)
  .then(function () {
    return database.saveUserData(userName, userData);
  })
  .nodeify(callback);
}

deferred.makeNodeResolver ()

Node.js API को पास करने के लिए उपयुक्त फ़ंक्शन देता है। यही है, इसमें हस्ताक्षर (err, result) और अगर err दी जाती है तो err साथ deferred.promise को अस्वीकार deferred.promise दिया जाएगा, या अगर इसे दिया जाता है तो result साथ इसे पूरा कर देगा।

जेनरेटर

यह कार्यक्षमता प्रयोगात्मक है।

Q.async (generatorFunction)

जनरेटर फ़ंक्शन को स्थगित फ़ंक्शन में परिवर्तित करने के लिए यह एक प्रयोगात्मक टूल है। इसमें yield समर्थन करने वाले इंजनों में नेस्टेड कॉलबैक को कम करने की क्षमता है। अधिक जानकारी के लिए जेनरेटर उदाहरण देखें।

Q.spawn (generatorFunction)

यह तुरंत जेनरेटर फ़ंक्शन चलाता है, और आगे Q.onerror को कोई भी त्रुटि नहीं है। एक असफल त्रुटि तब होती है जब फ़ंक्शन अस्वीकृत वादा करता है। ध्यान दें कि यह स्वचालित रूप से तब होता है जब जनरेटर फ़ंक्शन एक त्रुटि फेंकता है, उदाहरण के लिए एक वादे पर yield करके जो उस कोड के आस-पास बिना किसी try अस्वीकार हो जाता है:

Q.spawn(function* () {
  // If `createUser` returns a rejected promise, the rejection reason will
  // reach `Q.onerror`.
  var user = yield createUser();
  showUserInUI(user);
});

त्रुटि हैंडलिंग और ट्रैकिंग

Q.onerror

एक सेटटेबल संपत्ति जो किसी भी अनिश्चित त्रुटियों को रोकती है जो अन्यथा घटना लूप के अगले टिक में फेंक दी जाती है, आमतौर पर done परिणामस्वरूप। ब्राउज़र में किसी त्रुटि की पूर्ण स्टैक ट्रेस प्राप्त करने के लिए उपयोगी हो सकता है, जो आमतौर पर window.onerror साथ संभव नहीं है।

Q.getUnhandledReasons ()

खारिज किए गए वादों से संबंधित कारणों की एक श्रृंखला प्राप्त होती है, जिन्हें वर्तमान में संभाला नहीं गया है, यानी उनके लिए onRejected कॉलबैक नहीं onRejected हैं, उन्हें बंद नहीं किया गया है, आम तौर पर ये संभावित रूप से "खोए" त्रुटियों का प्रतिनिधित्व करते हैं, इसलिए यह सरणी संभवत: उस समय को छोड़कर खाली होना चाहिए जब आप असीमित रूप से एक अस्वीकार वादे पारित कर रहे हैं ताकि कोई बाद में अस्वीकृति को संभाला जा सके।

Q.stopUnhandledRejectionTracking ()

अनचाहे अस्वीकृति ट्रैकिंग बंद कर देता है, जो आपको कुछ डीबग जानकारी उपयोगी नहीं लगता है, जो थोड़ा दक्षता प्रदान करता है। यह Qode को Node.js. में प्रक्रिया से बाहर निकलने पर किसी भी अनचाहे अस्वीकृति कारणों को प्रिंट करने से रोकता है।

Q.resetUnhandledRejections ()

क्यू की अनचाहे अस्वीकृति की आंतरिक ट्रैकिंग को रीसेट करता है, लेकिन अनचाहे अस्वीकृति ट्रैकिंग को रोकता है। यह विधि मुख्य रूप से परीक्षण और नैदानिक ​​उद्देश्यों के लिए उजागर की जाती है, जहां आपने कुछ अनचाहे अस्वीकृति जमा की हो सकती है लेकिन एक स्वच्छ स्लेट के साथ फिर से शुरू करना चाहते हैं।

अन्य

Q.isPromise (मान)

वापस देता है कि दिया गया मान एक क्यू वादा है या नहीं।

Q.isPromiseAlike (मान)

वापस देता है कि दिया गया मान एक वादा है (यानी यह एक कार्य के साथ एक वस्तु है)।

Q.promised (समारोह)

फनक का एक नया संस्करण बनाता है जो मूल func कॉल करने से पहले वादे और गैर-वादे मूल्यों के किसी भी संयोजन को स्वीकार करता है, उन्हें अपने पूर्णता मूल्यों में परिवर्तित कर देता है। लौटा संस्करण हमेशा एक वादा देता है: यदि func return या throw , तो Q.promised(func) क्रमशः पूरा या अस्वीकार कर देगा।

यह उन कार्यों को बनाने के लिए उपयोगी हो सकता है जो या तो वादे या गैर-वादे मान स्वीकार करते हैं, और यह सुनिश्चित करने के लिए कि कार्य हमेशा अनजाने फेंकने वाले अपवादों के सामने भी एक वादा करता है।

Q.longStackSupport

एक सेटटेबल संपत्ति जो आपको लंबे स्टैक ट्रेस समर्थन को चालू करने देती है। यदि चालू हो जाता है, तो "स्टैक कूद" को एसिंक्रोनस वादे ऑपरेशंस में ट्रैक किया जाएगा, ताकि अगर कोई असफल त्रुटि नहीं की जाती done या अस्वीकृति कारण की stack संपत्ति का अस्वीकार कॉलबैक में निरीक्षण किया जाता है, तो एक लंबा स्टैक ट्रेस उत्पन्न होता है।

कस्टम संदेश API (उन्नत)

Q वादा कन्स्ट्रक्टर ऑब्जेक्ट्स पर संचालन करने के लिए मूल एपीआई स्थापित करता है: "get", "put", "del", "post", "apply", और "keys"। "ऑपरेटरों" का यह सेट उन वादों को बनाकर बढ़ाया जा सकता है जो अन्य ऑपरेटर नामों के साथ संदेशों का जवाब देते हैं, और उन वादों को संबंधित संदेश भेजकर।

promise.dispatch (ऑपरेटर, तर्क)

तर्कों के दिए गए सरणी के साथ, एक वादे को मनमाना संदेश भेजता है।

वादे को संदेश अग्रेषित करते समय नियंत्रण-प्रवाह के खतरों और सुरक्षा छेद को पेश न करने के लिए देखभाल की जानी चाहिए। उपर्युक्त कार्यों, विशेष रूप then , सावधानी से तैयार किए गए या दुर्भावनापूर्ण वादे को रोकने के लिए सावधानीपूर्वक तैयार किए जाते हैं जैसे कॉलबैक को कई बार लागू नहीं करना या ईवेंट लूप के उसी मोड़ में।