How do I access promise callback value outside of the function?

巧了我就是萌 提交于 2020-12-12 11:36:15

问题


It is to my understanding that callback functions are asynchronous and cannot return a value like regular functions. Upon reading about promises, I thought I grasped a good understanding about them, that they are basically an enhanced version of callbacks that allows returning a value like asynchronous function. In my getConnections method, I am attempting to call the find() function on my database through mongoose, and I am attempting to grab this array of objects and send it to the views.

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

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

        })
console.log(test)

When I attempt to log to the console outside of the promise function, I get Promise { _U: 0, _V: 0, _W: null, _X: null }

I don't think this is functioning correctly, and I thought I utilized promises correctly. Could anyone point me in the right direction on how to return this array of objects outside of the callback function?


回答1:


You can simply add await before the promise declaration. i.e.

var test = await new Promise...



回答2:


    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);



回答3:


The thing is that when you write a function like this:

const getData = async () => { const response = await fetch(someUrl, {}, {}); return response;}

Then you also need to await that function when you call it. Like this:

const setData = async () => { const dataToSet = await getData(); }



回答4:


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

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

        })

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

Should solve your problem.



来源:https://stackoverflow.com/questions/61281739/how-do-i-access-promise-callback-value-outside-of-the-function

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!