Подскажите, как видоизменить функцию Код (Javascript): test(){ axios.get('/test') .then(response => { return buildTree(response.data) }) }, под вот этот шаблон: Код (Javascript): function getData() { return new Promise(resolve => { resolve([ { //конечные данные } ]) }) }
return axios.get('/test') это уже промис. Если хочешь впихнуть еще в один промис значит будет еще один промис. К примеру если нужно два аксиос запроса вкладываешь один в другой. Плюс никто не мешает использовать асунги если вложенность пугает $data = await axios('/data'); ну а сам getData соответсвенно async
нет, мне как раз нужно вместо того промиса что в примере впихнуть axios.get('/test') + .then(response => { return buildTree(response.data) --- Добавлено --- хотелось бы единообразия, так что лучше все таки промис
Код (Javascript): // нечто, что возвращает promise function anotherAsyncFc() { return new Promise(r => { setTimeout(r, 5000, 'hello, i am ') }) } // обработка результата "нечто" через async / await async function prepareResponseWithAsyncAwait() { let i = await anotherAsyncFc() return i + 'async / await' } // обработка результата "нечто" с возвращением нового promise function prepareResponseWithPromise() { return new Promise(r => { anotherAsyncFc().then((i) => { r(i + 'promise') }) }) } // вызов обработчика через async/await async function asyncAwaitFc() { console.log(await prepareResponseWithAsyncAwait()) } asyncAwaitFc() // вызов обработчика через promise prepareResponseWithPromise().then(i => { console.log(i) })
кароч Код (Javascript): function getData() { return axios.get('/test') .then(response => buildTree(response.data)); }
если бы все так просто было яб не спрашивал. Так возвращается только промис, без обработки по совету romach работает Код (Javascript): test1(){ return new Promise(r => { axios.get('/test') .then(response => { r(buildTree(response.data)) }) }) } никак до конца не вкурю, как этот чертов промис работает
Асинхронно запускает переданную в параметре функцию. Этой функции, в свою очередь, передаёт функцию resolve. Когда рабочая функция промиса посчитает, что она завершила свою работу, она должна вызвать resolve, для того чтобы оповестить того, кто ожидает окончания промиса о том, что она отработала.