Как решить функцию обещания - PullRequest
0 голосов
/ 21 февраля 2020

Как я могу показать результат после обещания? Я вижу результат в 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)
  })

Ответы [ 2 ]

0 голосов
/ 21 февраля 2020

Вы должны использовать аргументы в функции, которую вы предоставляете конструктору Promise, чтобы разрешить / отклонить обещание. Затем вы просто передаете данные в качестве аргументов. Вот базовый c пример:

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 голосов
/ 21 февраля 2020

Вы пропустили результат обратного вызова:

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)
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...