Vue: Превратить метод в обещание? - PullRequest
0 голосов
/ 26 мая 2020

Я использую Dropzone для обработки изображений. Я вручную вызываю обработку изображения нажатием кнопки, поэтому внутри функции с именем submitAssets() я делаю это:

submitAssets: function() {
   this.$refs.dropzoneReference.processQueue();
   axios.get('/users')
}

Часть вызова processQueue в dropzone попадает в мой бэкэнд и сохраняет URL-адрес изображения в объект пользователя.
Проблема в том, что вызов ax ios получает информацию от объекта пользователя, но изображение еще не было обработано и сохранено в БД. Есть ли способ сделать это обещанием, чтобы вызов ax ios не вызывался до завершения processQueue?

1 Ответ

1 голос
/ 26 мая 2020

Если processQueue уже возвращает обещание, вы можете просто использовать async/await. В противном случае вам нужно будет превратить его в обещание, чтобы работало следующее.

submitAssets: async function() {
   await this.$refs.dropzoneReference.processQueue();
   axios.get('/users')
}

А внутри processQueue вы можете сделать что-то вроде:

const processQueue = () => {
  return new Promise((resolve, reject) => {
  ...make your changes
  resolve();
  });
}
...