Я хочу получить список строк, используя localStorage
в виде:
this.userService.getExpertisesListByIdUser(2).map((listExpertises: Array<any>) =>
{
let result:Array<Expertise> = [];
let libs:Array<String> = [];
if (listExpertises)
{
listExpertises.forEach((expert) =>
{
libs.push(expert.name);
result.push(new Expertise(expert.id, expert.name, expert.username));
});
}
localStorage.removeItem("libs");
localStorage.setItem("libs", JSON.stringify(libs));
})
var storedNames = JSON.parse(localStorage.getItem("libs"));
console.log(storedNames.length); // That gives 0 as length : WRONG
метод getExpertisesListByIdUser равен:
getExpertisesListByIdUser(id: number): Observable<any>
{
return this.http.get(`${this.baseUrl}/users/expertises/${id}`);
}
Как прокомментировал, я получил длину как 0.
Я получил правильный результат, если я поставил localStorage
за пределами map
.
Но мне нужно это внутри map
, чтобы получить синхронизацию .
Теперь размер этого кода правильный.
this.userService.getExpertisesListByIdUser(2).subscribe(listExpertises => {
let libs:Array<String> = [];
let exps:Array<Expertise> = [];
if (listExpertises)
{
listExpertises.forEach((expert) =>
{
libs.push(expert.name);
exps.push(new Expertise(expert.id, expert.name, expert.selected));
});
}
localStorage.removeItem("libs");
localStorage.setItem("libs", JSON.stringify(libs));
localStorage.removeItem("exps");
localStorage.setItem("exps", JSON.stringify(exps));
});
var storedNames = JSON.parse(localStorage.getItem("libs"));
var storedExperties = JSON.parse(localStorage.getItem("exps"));
console.log("----------------- Size: " + storedNames.length);
console.log(storedNames);
storedNames.forEach((name: string) =>
{
console.log("--------------Name from list of strings: " + name);
});
storedExperties.forEach((exp: Expertise) =>
{
console.log("--------------Name from list of objects: " + exp.name);
});
но на консоли я получил:
![screenshot of empty list](https://i.stack.imgur.com/hIHgA.png)
Не могли бы вы сказать мне, что я пропустил?
Заранее спасибо.