Estoy tratando de asignar una variable dentro de una función .then pero no sé cómo hacerlo en la tienda svelte. Sé que es una promesa y toma algún tiempo para ser asignado.
Aquí está el código.
data.products.data = data?.products?.data?.map((item) => { let category = ''; customPIMListStore.getProductCategory(item.productCategoryId, token).then((data) => { category = data; console.log('category inside', category); }); return { ...item, category }; }); getProductCategory: async (id, token) => { const res = await api.get(`backoffice/v1/category/${id}`, token); return res?.category?.name; },Tendrás que esperarlo
data.products.data = await Promise.all(data?.products?.data?.map(async (item) => { const category = customPIMListStore.getProductCategory(item.productCategoryId, token) return { ...item, category }; }));Como tiene asincronía, deberá cambiar su código a
data.products.data = await Promise.all(data?.products?.data?.map(async (item) => { const category = await customPIMListStore.getProductCategory(item.productCategoryId, token); return { ...item, category }; }));o
Promise.all(data?.products?.data?.map(async (item) => { const category = await customPIMListStore.getProductCategory(item.productCategoryId, token); return { ...item, category }; })).then(result => data.products.data = result);Tendrá que hacer su propia implementación del mapa. Dado que la función de mapa no es una función asíncrona.
productsData.forEach((item, i) => { let category = ''; customPIMListStore.getProductCategory(item.productCategoryId, token).then((data) => { category = data; console.log('category inside', category); productsData[i] = { ...item, category } }); });EDITAR: convertir for loop a forEach loop por razones de seguridad. señalado por Abdel