javascript - वादों के लिए ".then(फ़ंक्शन(ए){रिटर्न ए?}" है?




node.js promise (2)

यह मुझे ऐसा लगता है जैसे .then(function (a) { return a; }) सिर्फ no-op है। सही?

हाँ। 1

यह बेकार है और इसे छोड़ दिया जाना चाहिए।

क्या चल रहा है और लेखक ने इसे क्यों लिखा है?

यह एक दोष है। या लेखक ने वादों को नहीं समझा।

1: यदि वे समान नहीं हैं, तो क्या अंतर है?

हमेशा की तरह, कुछ किनारे मामले हैं। वाकई अजीब हैं। कोई भी (व्यापक टिप्पणी के बिना) का उपयोग करना चाहिए:
क) यह साझा करने से बचने के लिए एक नया वादा उदाहरण, एक अलग वस्तु देता है। हालांकि, तब। .then() होगा।
b) a को उसके तत्कालीन-नेस के लिए फिर से जांचा जाता है। यदि यह पूर्ति के बाद से अचानक एक वादा बन गया, तो यह अब इंतजार किया जाएगा। यह निश्चित रूप से भयानक होगा।

मैं बुकशेल्फ़ के बारे में इस ट्यूटोरियल को पढ़ रहा हूँ। बुकशेल्फ़ ब्लूबर्ड वादों का उपयोग करता है। कुछ उदाहरण ऐसे हैं जो कुछ इस तरह दिखते हैं:

var getEvents = function(participantId) {  
  return new models.Participant()
    .query({where: {id: participantId}})
    .fetch({withRelated: ['events'], require: true})
    .then(function(model) {
      return model;
    });
};

मैं अभी भी वादों को लेकर सहज नहीं हूं, लेकिन मैंने अब तक जो भी सीखा है, वह अजीब लगता है। मेरा प्रश्न यह है कि क्या उक्त कार्य ठीक उसी तरह है जैसे कि लौटना fetch() सीधे और then() फाइनल से बाहर जाना then() :

var getEvents = function(participantId) {  
  return new models.Participant()
    .query({where: {id: participantId}})
    .fetch({withRelated: ['events'], require: true});
};

यही है, यह अभी भी एक ही काम करता है, एक ही वादा वापस करता है, उसी तरह से कहा जा सकता है, आदि?

जो मैं समझता हूं, then पारित किए गए फ़ंक्शन का पैरामीटर श्रृंखला में पिछले वादे का रिटर्न मूल्य प्राप्त करता है। तो, यह मुझे ऐसा लगता है .then(function (a) { return a; }) सामान्य तौर पर यह .then(function (a) { return a; }) केवल एक नो-ऑप है। सही?

यदि वे समान नहीं हैं, तो क्या अंतर है? क्या चल रहा है और लेखक ने इसे क्यों लिखा है?


बर्गी का जवाब सही है, लेकिन सिर्फ एक मामले को प्रदर्शित करने के लिए जहां यह एक नो-ऑप नहीं है यहां एक विपरीत उदाहरण है जहां यह एक नो-ऑप नहीं है:

o = {};
Promise.resolve(o).then(o => o.then = () => {}); // make thenable
Promise.resolve(o).then(console.log); // logs the object
Promise.resolve(o).then(x => x).then(console.log); // doesn't log the object

सामान्य तौर पर, then(function(a) { return a; }) ऐसा न करें then(function(a) { return a; })







bluebird