nodejs中使用async/await 获取返回值问题

发布于 2022-09-05 08:08:50 字数 565 浏览 13 评论 0

我使用的是nodejs中的redis,使用zscore获取数据,但是直接返回的值是true和false,实际的值是从回调函数中获取,但是我总是无法获取到实际的值,求指点,万分感谢!!!

var rs={score:0};

 var getAs= async function() {
    const doc = await client.zscore('myzset', 'one', function (err, res) {
            console.log("score-1-:"+res);
            rs.score=res
            return res;
        });
    return doc;
}
var getAs2 = async function () {
    var ret = await getAs();
    return ret;
}
getAs().then(function (result) {
        console.log("then:"+result);
});

console.log("#############"+rs.score);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

孤蝉 2022-09-12 08:08:50

await 后面返回的应该是一个promise的值

function text(){
    return new Promise((resolve, reject) =>{
           client.zscore('myzset', 'one', function (err, res) {
              if(err){
              reject(err)
              }
              resolve(res)
        })
    })
}
async get()=>{
   retrun result =  await text()
    
}

这样就可以获取到你需要的数值了

小ぇ时光︴ 2022-09-12 08:08:50
const rs = { score: 0 };

const getAs = async () => {
    const doc = await new Promise((resolve) => {
        client.zscore('myzset', 'one', (err, res) => {
            console.log(`score-1-:${res}`);
            rs.score = res;
            return resolve(res);
        });
    });
    return doc;
};
const getAs2 = async () => {
    const ret = await getAs();
    return ret;
};
getAs()
    .then((result) => {
        console.log(`then:${result}`);
    });

console.log(`#############${rs.score}`);
天荒地未老 2022-09-12 08:08:50

await 返回的值是你的 promise 返回的值,

return new Promise((resolve, reject) => {
if(true) return resolve('xxoo')
reject('xxxx')
})

所以你需要去你的 promise 里设定返回值,才能够接收到。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文