दिलचस्प पोस्ट
मेवेन में एक संस्करण। जावा फ़ाइल जेनरेट करें इंपैक्टिक प्रतीक्षा वि में अंतर क्या है। सेलेनियम वेबड्रिवर में स्पष्ट इंतजार? AngularJS द्वारा जनरेट किए गए एक चुनिंदा सूची के लिए एक पूर्व-चयन कैसे करें? जब std :: चालन फ़ंक्शन रिटर्न मान पर किया जाना चाहिए? Windows Azure पर Codeigniter के index.php को कैसे पुनः लिखें कैसे फाइल करने के लिए cin और cout पुनर्निर्देशित करने के लिए? मैं अपने अप्रतिबंधित / दुर्लक्षित फाइलों / फ़ोल्डरों को अपने काम की नकल में कैसे हटा सकता हूं? सरणी संरचना के साथ संबंधित चयन बक्से को पॉप्युलेट करने के लिए जावास्क्रिप्ट और jquery का उपयोग करना क्या है ?: PHP 5.3 में? एंड्रॉइड मीडियारेकॉर्डर – "आरंभ विफल: -19" लेआउट xml में onClick विशेषता का उपयोग करने वाले एंड्रॉइड संवाद में NoSuchMethodException का कारण बनता है फ्लोट बिट्स और सख्त अलियासिंग क्रोम एक्सटेंशन – ऑब्जेक्ट पेज से लेकर संदर्भ स्क्रिप्ट तक एनएसडीटा को हेक्साडेक्समल स्ट्रिंग में क्रमबद्ध करने का सर्वोत्तम तरीका xdebug दूरस्थ डिबग को सक्षम करने से अपाचे सर्वर बहुत धीमा होता है

नेस्टेड वादों को हटा रहा है

मैं नोडजेएस के अनुरोधों और वादे के जरिए नेटवर्क कोड का वादा करने और लिखने के लिए नया हूँ।

मैं इन नेस्टेड वादों को हटाना चाहूंगा और उनके बजाय उन्हें चेन करना चाहता हूं, लेकिन मुझे यकीन नहीं है कि मैं इसके बारे में कैसे जाना चाहूंगा / क्या यह जाने का सही तरीका है।

exports.viewFile = function(req, res) { var fileId = req.params.id; boxContentRequest('files/' + fileId + '/content', req.user.box.accessToken) .then(function(response) { boxViewerRequest('documents', {url: response.request.href}, 'POST') .then(function(response) { boxViewerRequest('sessions', {document_id: response.body.id}, 'POST') .then(function(response) { console.log(response); }); }); }); }; 

यह अनुरोध कोड है:

 var baseContentURL = 'https://api.box.com/2.0/'; var baseViewerURL = 'https://view-api.box.com/1/'; function boxContentRequest(url, accessToken) { return new Promise(function (resolve, reject) { var options = { url: baseContentURL + url, headers: { Authorization: 'Bearer ' + accessToken, } }; request(options, function (err, res) { if (err) { return reject(err); } else if (res.statusCode !== 200) { err = new Error("Unexpected status code: " + res.statusCode); err.res = res; return reject(err); } resolve(res); }); }); } function boxViewerRequest(url, body, method) { return new Promise(function (resolve, reject) { var options = { method: method, url: baseViewerURL + url, headers: { Authorization: 'Token ' + config.box.viewerApiKey }, json: body }; request(options, function (err, res, body) { if (err) { return reject(err); } else if (res.statusCode !== 200 && res.statusCode !== 201 && res.statusCode !== 202) { err = new Error("Unexpected status code: " + res.statusCode); err.res = res; return reject(err); } resolve(res, body); }); }); } 

किसी भी जानकारी की सराहना की जाएगी।

Solutions Collecting From Web of "नेस्टेड वादों को हटा रहा है"

हर कॉलबैक से, आपको नया वादा वापस करना होगा:

 exports.viewFile = function(req, res) { var fileId = req.params.id; boxContentRequest('files/' + fileId + '/content', req.user.box.accessToken) .then(function(response) { return boxViewerRequest('documents', {url: response.request.href}, 'POST'); }) .then(function(response) { return boxViewerRequest('sessions', {document_id: response.body.id}, 'POST'); }) .then(function(response) { console.log(response); }); }; 

तब वादा है जो कि। तब .then() कॉल द्वारा वापस किया जाता है, .then() "इनर" वादे से मूल्य के साथ हल होगा, ताकि आप आसानी से उन्हें चेन कर सकें।

सामान्य पैटर्न:

 somePromise.then(function(r1) { return nextPromise.then(function(r2) { return anyValue; }); }) // resolves with anyValue || \||/ \/ somePromise.then(function(r1) { return nextPromise; }).then(function(r2) { return anyValue; }) // resolves with anyValue as well