gpt4 book ai didi

javascript - 如何从 promise 中检索值(value)

转载 作者:太空宇宙 更新时间:2023-11-04 01:45:13 25 4
gpt4 key购买 nike

我一直在从事一个项目,我需要一些关于此的帮助:我在函数中有一个 promise ,我需要返回“当前”的值,以便我可以在其他地方使用它。我从 Firebase 检索数据,然后对结果进行打乱并仅从结果中提取 10 个元素。

function retriveData() {

//declaration of variables ...

axios.get("Firebase link")
.then((response) => {
keyArray = Object.keys(response.data);
let k = shuffle(keyArray);
//shuffle is a function to shuffle the key results
for (var i = 0; i < 10; ++i) {
current[i] = response.data[k[i]];
}
});
return current;} //I want this variable to end up with the promise result in current

我知道,这不是 promise 的工作方式,但我需要一个解决方案来解决这个问题。谢谢!

最佳答案

axios.get 是异步的,因此要么将回调传递给 retrieveData,要么它需要返回一个 Promise 本身。没有办法解决这个问题。

使用回调(无错误处理):

function retriveData(callback) {
axios.get("Firebase link")
.then((response) => {
keyArray = Object.keys(response.data);
let k = shuffle(keyArray);
//shuffle is a function to shuffle the key results
for (var i = 0; i < 10; ++i) {
current[i] = response.data[k[i]];
}

callback(null, current);
});
}

retrieveData((err, result) => console.log(result));

使用 Promise(无错误处理):

function retriveData() {
return new Promise((resolve) => {
axios.get("Firebase link")
.then((response) => {
keyArray = Object.keys(response.data);
let k = shuffle(keyArray);
//shuffle is a function to shuffle the key results
for (var i = 0; i < 10; ++i) {
current[i] = response.data[k[i]];
}

resolve(current);
});
}

retrieveData().then((result) => console.log(result));

[编辑] 上面的示例仅用于说明目的。由于 axios.get 已经返回一个 Promise,因此可以直接从 retrieveData 返回它。

function retriveData() {
return axios.get("Firebase link")
.then((response) => {
keyArray = Object.keys(response.data);
let k = shuffle(keyArray);
//shuffle is a function to shuffle the key results
for (var i = 0; i < 10; ++i) {
current[i] = response.data[k[i]];
}

return current;
});
}

retrieveData().then((result) => console.log(result));

关于javascript - 如何从 promise 中检索值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51714983/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com