दिलचस्प पोस्ट
__ डिट्रिब्यूट __ ((कंस्ट्रक्टर)) उपाध्यक्ष के बराबर? खेल 2048 के लिए इष्टतम एल्गोरिदम क्या है? JQuery के साथ गतिशील रूप से भरी हुई इनलाइन और / या बाह्य सीएसएस कैसे लागू करें सी या सी ++ में आप स्ट्रिंग को कैसे बदलते हैं? पायथन में लिनक्स कंसोल विंडो चौड़ाई कैसे प्राप्त करें क्या नये सी ++ 11 प्रोग्रामों के लिए पिछला रिटर्न टाइप वाक्यविन्यास शैली डिफ़ॉल्ट होनी चाहिए? एंड्रॉइड कर्सर को पुनरावृति करने का सबसे अच्छा तरीका क्या है? टैब या विंडो के बीच संचार क्रोम / फ़ायरफ़ॉक्स console.log हमेशा अपरिभाषित कह रही एक पंक्ति जोड़ता है पायथन नेस्टेड फ़ंक्शंस चर स्कॉपींग नवीनतम संशोधित फाइल को लगातार निर्देशिका में कैसे खोजें? संदर्भ से गुजारें या मूल्य से गुजारें? (दीप) jQuery का उपयोग कर एक सरणी की नकल Windows कन्सोल ऐप में आउटपुट यूनिकोड स्ट्रिंग फोन में फोनगैप खुला लिंक

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

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

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

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); }); }); } 

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

वेब के समाधान से एकत्रित समाधान "नेस्टेड वादों को हटा रहा है"

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

 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