दिलचस्प पोस्ट
कॉलम में एकाधिक मानों के साथ प्रश्न प्राइमफैसेस सीएसएस देखो 'एन'फ़ेल लापता है और जेएस "अनचाहे संदर्भ त्रुटि: प्राइमफैसेस परिभाषित नहीं है" SQL सर्वर में क्वेरी टाइमआउट को मजबूर करना पटरियों: लिंक (यूआरएल) को मान्य करने का एक अच्छा तरीका क्या है? एंड्रॉइड एचटीपीएस यूआरएलकॉन्नेक्शन ईओफ़ेप्शन जावा में स्ट्रिंग पूल क्या है? अपाचे एचटीटीपी क्लाइंट के साथ अमान्य एसएसएल प्रमाणपत्र कैसे प्रबंधित करें? गंदगी-सरल PHP टेम्पलेट्स … क्या यह `ईवाल` के बिना काम कर सकता है? cmake add_custom_command SSLContext इनिशियलाइज़ेशन कर्नेल अंतरिक्ष और उपयोगकर्ता स्थान के बीच अंतर क्या है? पता लगाएँ कि ऐप को पुश अधिसूचना से लॉन्च किया गया था या खोला गया था java.lang.noclassdeffounderror: org.ksoap2.serialization.SoapObject डुप्लिकेट कुंजी पर MySQL – अंतिम प्रविष्टि आईडी? समस्या बाध्यकारी डाटाग्रिड कॉमबॉबोक्लूम.आईटीम्ससोर्स

मैं वादा के अंदर स्थिति कैसे वापस कर सकता हूं?

मैंने लूपबैक और जेएसएफएफ के साथ वादा सीखना शुरू किया, और इस समस्या को संभाल नहीं सका; मैं cb () फ़ंक्शन के लिए वायर्ड में स्टेटस वापस नहीं लौटा सकता असल में मैं बिक्रीबल से जुड़ना चाहता हूं और जेएसफोर्स के माध्यम से डाटा प्राप्त करना चाहता हूं और इसे डीओबी लूपबैक के माध्यम से लिखना है। फिर रिमोट उड़ाने के बाद ग्राहक को बनाया / अद्यतन / त्रुटि रिकॉर्ड वापस करना चाहते हैं

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

मैं कैसे इसे ठीक कर सकता हूं?

यहां मेरा कोड है:

module.exports = function(Contact) { var jsforce = require('jsforce'); var async = require("async"); var lr = require('lr.js'); Contact.ImportContacts = function(cb) { // Salesforce Projects List var sf_projects = []; //Salesforce Conn String var conn = lr.SalesforceConn(); conn.apex.get("/Contact/", function(err, res) { var status = { "Created": [], "Updated": [], "Error": "" }; if (err) console.log(err); sf_projects = res; // Clear result status.Created.length = 0; status.Updated.length = 0; status.Error = ""; if (sf_projects != undefined) { async.eachSeries(sf_projects, function(contact, callback) { Contact.findOrCreate({ where: { co_SalesforceID: contact.Id } }, { co_Name: contact.FirstName, co_Surname: contact.LastName, co_Salutation: contact.Salutation, co_Title: contact.Title, co_Department: contact.Department, co_Email: contact.Email, co_PhonePersonal: contact.HomePhone, co_PhoneWork: contact.Phone, co_PhoneCell: contact.MobilePhone, co_Description: contact.Description, co_SalesforceID: contact.Id }, function(err, cntct, created) { if (err) console.log(err); if (created) { status.Created.push(cntct.id); console.log("Contact created. SalesForeID: " + cntct.co_SalesforceID + " ContactName: " + lr.isDefined(cntct.co_Salutation) + " " + lr.isDefined(cntct.co_Name) + " " + lr.isDefined(cntct.co_Surname)); } else { Contact.replaceById(cntct.id, { co_Name: contact.FirstName, co_Surname: contact.LastName, co_Salutation: contact.Salutation, co_Title: contact.Title, co_Department: contact.Department, co_Email: contact.Email, co_PhonePersonal: contact.HomePhone, co_PhoneWork: contact.Phone, co_PhoneCell: contact.MobilePhone, co_Description: contact.Description, co_SalesforceID: contact.Id }, false, function(err, obj) { if (err) console.log(err); status.Updated.push(obj.id); console.log("Contact updated. SalesForeID: " + obj.co_SalesforceID + " ContactName: " + lr.isDefined(obj.co_Salutation) + " " + lr.isDefined(obj.co_Name) + " " + lr.isDefined(obj.co_Surname)); }); } }); callback(err); }, function(err) { if (err) console.error(err); }); } else { console.log("Salesforce Connection Error!"); status.Error = "Salesforce Connection Error"; } return Promise.resolve(status); }).then(function(end) { cb(null, end); }).catch(function(err) { if (err) console.log(err); }); }; Contact.remoteMethod( 'ImportContacts', { returns: { arg: 'result', type: 'string' }, http: { path: '/importContacts', verb: 'get' } } ); }; 

Solutions Collecting From Web of "मैं वादा के अंदर स्थिति कैसे वापस कर सकता हूं?"

यह पूरी तरह से स्पष्ट नहीं है कि क्या पूछ रहा है, और आप अपने solve() फ़ंक्शन solve() शामिल नहीं करते हैं जो यहां महत्वपूर्ण हो सकता है, इसलिए मैं आपको केवल कुछ सामान्य सुझाव दे सकता हूं

आपके पास ऐसा कुछ है:

 }).then(function(end) { cb(null, end); }).catch(function(err) { if (err) console.log(err); }); 

पहला भाग ( then ) से पता चलता है कि नोड कॉलबैक के सामान्य सम्मेलन के बाद cb() कॉलबैक त्रुटि को पहली तर्क के रूप में लेता है और दूसरा तर्क के रूप में मान होता है।

लेकिन फिर दूसरे भाग में ( catch ) आप कॉलबैक को त्रुटि के साथ कॉल नहीं करते हैं इसके अलावा, if (err) catch हेन्डलर में से बेमानी है, तो हमेशा एक त्रुटि होगी, जब तक solve() फ़ंक्शन अस्वीकृति के कारण निर्दिष्ट false या null साथ अस्वीकृत वादे देता है – और फिर भी, अस्वीकृति के कारण जो भी हो , कॉलबैक को हमेशा त्रुटि के मामले में बुलाया जाना चाहिए:

 }).then(function(end) { cb(null, end); }).catch(function(err) { console.log(err); cb(err); }); 

इस तरह आपको ऐसी स्थिति नहीं मिलेगी जहां कॉलबैक कभी नहीं बुलाया जाता है और हमेशा के लिए प्रतीक्षा करता है जब आप पारंपरिक कॉलबैक के साथ वादों को मिलाते हैं, तो आपको कुछ चीजों को ध्यान में रखना होगा:

कोई भी कार्य जिसे एक तर्क के रूप में कॉलबैक मिलता है, यह सुनिश्चित करना चाहिए कि यह कॉलबैक कहा जाता है और यह वास्तव में एक बार कहा जाता है फंक्शन लेखक के रूप में यह सुनिश्चित करना आपकी ज़िम्मेदारी है कि त्रुटि के मामले में आपको चलाना चाहिए:

 callback(error); 

और सफलता के मामले में आपको कॉल करना चाहिए:

 callback(null, data); 

इस तरह, callback यह जान सकता है कि ऑपरेशन कब समाप्त हो गया है और क्या यह पहली सफलता का परीक्षण करके सफलता या विफलता के साथ समाप्त हो गया है:

 function (err, data) { if (err) { console.log('Error:', err); } else { console.log('Success:', data); } } 

कॉलबैक लेते हुए फ़ंक्शन के पूरे आमंत्रण आम तौर पर होता है:

 functionTakingCallback('some', 'arguments', function (err, data) { if (err) { console.log('Error:', err); } else { console.log('Success:', data); } }); 

दूसरी तरफ यदि फ़ंक्शन वादा करता है, तो आप इसे इस तरह प्रयोग करते हैं:

 functionReturningPromise('some', 'arguments') .then(function (data) { console.log('Success:', data); }) .catch(function (err) { console.log('Error:', err); }); 

इस मामले में परीक्षण की कोई ज़रूरत नहीं है।

कॉलबैक को हमेशा ठीक एक बार कहा जाना चाहिए। वादा हमेशा या तो हल हो जाए या अंत में खारिज हो जाएं। उपयोग अलग है और कॉलर और कैली दोनों की जिम्मेदारी अलग है। जब आप उन दो शैलियों को मिलाते हैं – फ़ंक्शंस जो परंपरागत नोड-स्टाइल कॉलबैक लेती हैं और फ़ंक्शन जो वादे करते हैं – तो आपको उन अंतरों से सावधान रहना होगा

आप कभी-कभी ऐसे फ़ंक्शंस को रूपांतरित कर सकते हैं जो promisify() जैसी लाइब्रेरीज़ का उपयोग करने के वादे के लिए कॉलबैक लेते हैं और इसके promisify() और promisifyAll() को अपने पूरे कोड बेस में अपने सभी promisifyAll() कार्यों के लिए सुसंगत एपीआई रखना है। देख:

आप कुछ अन्य उत्तर देख सकते हैं जहां मैं कॉलबैक और वादों के बीच के अंतर को समझाता हूं और उन्हें अधिक विवरण में एक साथ कैसे उपयोग करें, जो इस मामले में आपके लिए सहायक हो सकता है:

  • कॉलबैक और वादों का उपयोग करने के तरीके पर विस्तृत विवरण
  • जटिल अनुरोध हैंडलरों में वादों का उपयोग करने के तरीके पर स्पष्टीकरण
  • AJAX अनुरोधों के उदाहरण पर वास्तव में एक वादा क्या है, इसका विवरण