Как получить доступ к значению обратного вызова обещания вне функции? - PullRequest
0 голосов
/ 18 апреля 2020

Насколько я понимаю, функции обратного вызова являются асинхронными и не могут возвращать значения, как обычные функции. Прочитав об обещаниях, я понял, что хорошо понял их, что в основном они представляют собой расширенную версию обратных вызовов, которая позволяет возвращать значение, подобное асинхронной функции. В моем методе getConnections я пытаюсь вызвать функцию find() в моей базе данных через mon goose, и я пытаюсь получить этот массив объектов и отправить его в представления.

var test =  new Promise((resolve, reject) => {
        Database.find().then(list => {
            resolve(list);

        }).catch(err=> {
            return reject(err);
        })

        })
console.log(test)

Когда я пытаюсь войти в консоль вне функции обещания, я получаю Promise { _U: 0, _V: 0, _W: null, _X: null }

Я не думаю, что это работает правильно, и я думал, что использовал обещания правильно. Может ли кто-нибудь указать мне правильное направление о том, как вернуть этот массив объектов вне функции обратного вызова?

Ответы [ 3 ]

0 голосов
/ 18 апреля 2020

Вы можете просто добавить await перед объявлением обещания. то есть

var test = await new Promise...
0 голосов
/ 18 апреля 2020
    var someValue;
    var test =  await new Promise((resolve, reject) => {
        Database.find().then(list => {
           resolve(list);

         }).catch(err=> {
           return reject(err);
       })

    }).then(res => {
      someValue=res;
    })

   console.log(someValue);
0 голосов
/ 18 апреля 2020
let test =  new Promise((resolve, reject) => {
        Database.find().then(list => {
            resolve(list);

        }).catch(err=> {
            return reject(err);
        })

        })

test
.then(result=>console.log(result))

Должен решить вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...