Задержка при обновлении массива - PullRequest
0 голосов
/ 31 января 2020

Я получаю небольшую задержку при обновлении массива. Мой интерфейс (React. js) получает доступ до того, как сервер обновляет его (node.js). Вот мой внутренний код:

router.get("/images/files", (req, res, next) => {
  let links = [];
  fileSchema
    .find()
    .then(doc => {
      doc.map(data => {
        client.files.getEmbedLink(data.fileID).then(file => {
          links.push(file);
          return res.status(200).json({
            status: "success",
            message: "Links are ready!",
            links: links
          });
        });
      });
    });

Как вы можете видеть, я нажимаю ссылки внутри другого массива, но я не знаю, как реагировать, когда массив полностью обновляется.

1 Ответ

1 голос
/ 31 января 2020

Вам нужно будет дождаться разрешения всех обещаний от ваших getEmbedLink вызовов, прежде чем отправлять свой ответ.

Это должно помочь:

router.get("/images/files", (req, res, next) => {
  fileSchema
    .find()
    .then(doc => {
      // Create an array of promises
      const promises = doc.map(data => {
        return client.files.getEmbedLink(data.fileID)
      });

      // Wait for all promises to resolve
      return Promise.all(promises)
    })
    .then(links => {
      // "links" will be an array of results
      res.status(200).json({
        status: "success",
        message: "Links are ready!",
        links: links
      });
    })
    .catch(err => {
      // Handle error
    });
});
...