#javascript #promise #axios
#javascript #обещание #axios
Вопрос:
Я пытаюсь реализовать получение данных из API с помощью параметров. У меня есть две функции для этого, и я не вижу ошибки. Есть идеи?
getFilteredProducts() {
return apiClient.get('/product/', {
params: {
search: String(name)
}
})
}
async fetchFilteredProducts({ commit }, name) {
await productService.getFilteredProducts({name})
.then(response => {
commit('SET_FILTERED_PRODUCTS', response.data.items)
})
.catch(error => {
console.log('Error has occured' error)
})
}
Я получил рабочие решения с приведенным ниже кодом, поэтому проблема, вероятно, со вторым параметром.
async fetchFilteredProducts({ commit }, name) {
await axios.get("MY_API_URL/product/", {
params: {
search: String(name)
}
})
.then(response => {
commit('SET_FILTERED_PRODUCTS', response.data.items)
})
Комментарии:
1. Вы не сказали нам, какие ошибки вы видите, какой URL-адрес генерируется, какой URL-адрес вы пытались сгенерировать. Здесь действительно сложно определить проблему, не говоря уже о ее причине или решении.
2. У меня нет ошибки в браузере, загрузчик появляется из-за запроса API, но у меня нет никакого результата, подобного использованию Axios.get напрямую.
3. Почему вы используете async-await и
.then()
после этого?4. Вы пытаетесь передать параметры
getFilteredProducts
функции, но она не принимает никаких
Ответ №1:
Неясно, чего вы пытаетесь достичь, но я думаю, что ваши функции должны быть такими:
Использование Async / Await:
// Your Service
async getFilteredProducts(name) {
return await apiClient.get('/product/', {
params: {
search: String(name)
}
})
}
// Using Your Service
async someParentFunction() {
const response = await getFilteredProducts("John")
console.log(response.data);
}
Использование обещаний:
// Your Service
getFilteredProducts(name) {
return apiClient.get('/product/', {
params: {
search: String(name)
}
})
}
// Using Your Service
getFilteredProducts("John").then((response) => {
console.log(response.data);
})
Обратите внимание на name
параметр, который я передаю getFilteredProducts
методу. Ранее этого не было, поэтому String(name)
получалась пустая строка ""
.