मैं वास्तव में अपने कोड में जावास्क्रिप्ट वादों को एकीकृत करने के लिए संघर्ष कर रहा हूं और इस पर कुछ मदद के लिए आभारी रहूंगा।

मेरे पास यह सरल कार्य है जो एक प्रोग्राम का हिस्सा है जो फाइलों को बनाने, पढ़ने, अपडेट करने और हटाने का काम करता है, इसलिए मैंने इसे कॉलबैक का उपयोग करने से वादों का उपयोग करने के लिए बदलने का फैसला किया।

यह डिलीट फंक्शन है:

lib.delete = (dir, file, callback) => {
  /* unlink the file */
  fs.unlink(lib.baseDir + dir + '/' + file + '.json', (err) => {
    if (!err) {
      callback(false);
    } else {
      callback(' Error deleting file');
    }
  });
};

जिस तरह से मैं ऐसा करने जा रहा था, वह एक वादे में async भाग को संलग्न करना था:

lib.delete = (dir, file, callback) => {
  /* unlink the file */
  return new Promise((resolve, reject) => {
    fs.unlink(lib.baseDir + dir + '/' + file + '.json', (err) => {
      if (!err) {
        resolve(false);
      } else {
        reject(err);
      }
    });
  });
});

लेकिन यह सब गलत लगता है क्योंकि यहां मैं वादे को परिभाषित कर रहा हूं, लेकिन यहां वास्तव में मैं इसका उपयोग करना चाहता हूं, यानी .then के साथ इसके परिणाम से निपटें।

मुझे यहां कुछ बुनियादी याद आ रही है, मुझे यह महसूस हो रहा है कि मुझे सभी डिलीट फ़ंक्शन के बारे में सोचने के तरीके को बदलने की जरूरत है ... किसी भी मदद की सराहना की जाएगी।

0
Enginebeat 18 मई 2018, 10:29

1 उत्तर

सबसे बढ़िया उत्तर

यदि आप Promise का उपयोग करना चाहते हैं, तो आपने इन तर्कों में callback पास नहीं किया है, यह वादा का लक्ष्य है: संकल्प/अस्वीकार करने के बाद आप जो भी फ़ंक्शन चाहते हैं उसे कॉल करें।

उदाहरण के लिए :

कॉलबैक के साथ:

lib.delete = (dir, file, callback) => {
  /* unlink the file */
  fs.unlink(lib.baseDir + dir + '/' + file + '.json', (err) => {
    if (!err) {
      callback(false);
    } else {
      callback(' Error deleting file');
    }
  });
};

lib.delete('./dir', 'filname.txt', function(res){
  console.log(res);
})

वादे के साथ

lib.delete = (dir, file) => {
  return new Promise((resolve, reject) => {
    fs.unlink(lib.baseDir + dir + '/' + file + '.json', (err) => {
      if (!err) {
        resolve(false);
      } else {
        reject(err);
      }
    });
  });
});

lib.delete('./dir', 'filname.txt')
  .then( () =>  console.log("No error i'm happy")
  .catch( (err) =>  console.log('Error', err)

then : जब संकल्प ट्रिगर होता है तो निष्पादित करें

catch : निष्पादन जब अस्वीकार ट्रिगर होता है

मुझे आशा है कि यह आपकी मदद करेगा!

0
GameTag 18 मई 2018, 12:09