提问人:rusli Abdul gani 提问时间:1/19/2023 最后编辑:rusli Abdul gani 更新时间:1/19/2023 访问量:30
如何获取具有回调的内置方法的映射的值
How to get value of maps of build in method that have callback
问:
我有一些函数需要获取值并返回它,但是在这些函数中,有一些数组映射,在其中,我需要调用内置函数,其中包含回调。
代码如下:
const db = require('db')
function test(){
let arr = [1,2,3,4,5]
let result = []
arr.map(function (val, idx){
db.get(key, function (err, value) {
//how can i get all value and passing it to result variable and passing the result to become return value in test() function ?
// db.get() is only return true, not return any other value
}
})
}
如何在redisGetAll函数中获取数据并返回..
我已经做的是:
const db = require('db')
function test(){
let arr = [1,2,3,4,5]
let result = []
arr.map(function (val, idx){
db.get(key, function (err, value) {
result.push({key, value})
}
})
return result //this should be still empty array, cause result.push happen in async process,
}
我知道我无法分配给数据变量,因为这是异步回调,它仍然是空数组,因为第一次启动。.
答:
0赞
Ele
1/19/2023
#1
您应该遵循 async-await 方法,如下所示
const db = require('db')
async function test() {
const arr = [1, 2, 3, 4, 5]
return await Promise.all(arr.map(async (val, idx) => getObj(key)));
}
function getObj(key) {
return new Promise(function(resolve) {
db.get(key, function(err, value) {
resolve({
key,
value
});
});
});
}
我假设你知道变量来自哪里。另一方面,请记住,必须调用此函数 waitkey
test
await test()
评论