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

我使用的是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);
阅读 20.1k
3 个回答

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()
    
}

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

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

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

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏