मैं वादे के बाद परिणाम कैसे दिखा सकता हूं? मुझे परिणाम console.log("the result is==>", result) में दिखाई देता है लेकिन promise.then के अंतर्गत मुझे कंसोल दिखाई नहीं देता।

const signIn = (password) => {
  var request = new DeviceAuthQuery();
  request.setPassword(password);
  let result;

  var response = client.authenticate(request, {}, (err, response) => {
    console.log("Request Sent 1111");
  });

  let promise = new Promise(() => {
    response.on('data', function(reply) {
      console.log('Data: 22222' + reply.getAuthjwt());
      result = reply.getAuthjwt();
      console.log("the result is==>", result)
      promise.resolve(true);
    });
  });

  promise.then(() => {
    console.log("the result ZZZZZ==>", result)
  })
0
Borhen Ftiss 21 फरवरी 2020, 14:03
2
promise वैरिएबल पर निर्भर होने के बजाय प्रॉमिस कंस्ट्रक्टर (new Promise((resolve, reject) => में तर्कों का उपयोग करने पर विचार करें।
 – 
evolutionxbox
21 फरवरी 2020, 14:08
आपके कोड से, यह तुरंत स्पष्ट नहीं है कि वादों की आवश्यकता क्यों है।
 – 
Adam
21 फरवरी 2020, 14:13

2 जवाब

आप कॉलबैक परिणाम चूक गए:

let promise = new Promise((resolve) => {
   response.on('data', function(reply) {
     console.log('Data: 22222' + reply.getAuthjwt());
     result = reply.getAuthjwt();
     console.log("the result is==>", result)
     resolve(true);
   });
});

promise.then((result) => {
  console.log("the result ZZZZZ==>", result)
})
0
Styler 21 फरवरी 2020, 14:08

वादे को हल/अस्वीकार करने के लिए आपको प्रॉमिस कंस्ट्रक्टर को प्रदान किए गए फ़ंक्शन में तर्कों का उपयोग करना चाहिए। फिर आप केवल डेटा को तर्क के रूप में पास करते हैं। यहाँ एक बुनियादी उदाहरण है:

const signIn = () => {
  var promise = new Promise((resolve, reject) => {
    setTimeout(function() {
      resolve("Foo Bar");
    }, 2000)
  });

  promise.then((result) => {
    console.log("the result ZZZZZ==>", result)
  })
}

signIn();
0
Rory McCrossan 21 फरवरी 2020, 14:12