gpt4 book ai didi

javascript - ionic 。如何使用存储并获得真实结果

转载 作者:行者123 更新时间:2023-11-28 04:51:49 24 4
gpt4 key购买 nike

我一直在尝试从 ionic 持久存储中获取基本信息。这是我从存储中获取几个 key 的代码(例如用户名和密码)

export const getMultiple = function(storage, keys: string[]) {
const promises = [];

keys.forEach( key => promises.push(storage.get(key)) );

return Promise.all(promises).then( values => {
const result = {};

values.map( (value, index) => {
result[keys[index]] = value;
});
console.log(result);
return result;
});
}

但是,如果我调用 getMultiple('uesrname' 'password') 这是我得到的结果:

t {__zone_symbol__state: null, __zone_symbol__value: Array[0]}

而不是

Object {email: null, password: null}

这是控制台通过 console.log(result); 注销的内容。知道为什么我没有收到此返回声明吗?

注意我尝试删除 return Promise.all ... 但是它返回一个 undefined

TLDR如何让我的程序等到我得到此 promise 的结果后才返回数据?

最佳答案

我并不是 100% 同意这一点,但我认为您错误地循环了 key 以使用 promise 。

我使用 Array.map 重写了您的 foreach 方法,为您想要对各个键/值执行的工作创建一个 Promise 数组,然后使用 Promise.all 等待它们。在此示例中,我刚刚将每个 storage.get()result 附加到 results 数组中。仅当所有 storage.get() 调用成功响应后,才会返回结果数组。我认为这就是你想要的。

export const getMultiple = function(storage, keys: string[]) {

let results = [];

// Use a map
return Promise.all(keys.map(key => {

return storage.get(key).then(result => {
// Perform some action on the result - add to an array, or whatever.
results.push(result);
return result;
});

})).then(() => {
// This will run after all the promises have been resolved.
return results;
});

尝试一下并告诉我。

关于javascript - ionic 。如何使用存储并获得真实结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42860944/

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