如何与 2 个新的 Promise 相互通信

How to communicate with 2 new Promise with each other

所以我正在尝试将 2 个新的 Promise 相互连接起来,这样我就可以互相发送信息。所以我想使用第一个承诺中的 image.url 用于第二个承诺,但是当我想调用 image.url 时它是未定义的。有没有人有想法使这项工作? (顺便说一句,代码之间没有任何区别,只是想在 2 Promise 之间有所不同)。

第一个承诺:

        image.promise = new Promise((resolve, reject) => {
          const formData = new FormData();
          formData.append('files', file);
          axios
            .post('http://api.resmush.it/', formData, { headers: { 'Content-Type': 'multipart/form-data' } })
            .then(response => {
              image.url = response.data.dest;
              console.log("The compressed image url: ", image.url)
            })
            .catch(() => reject());
        })
        .then(response => {
          image.status = STATUS_OK;
          image.savings = response.data.percent;
        })

第二个承诺:

        image.promise = new Promise((reject) => {
        console.log(image.url);
        function downloadFile() {
          axios
            .get('http://par3.static.resmush.it/1e5b76fc993169757c1319c027f5dca3/insta_logo.jpg')
            .then(response => {console.log(response)})
            // .then(response => resolve(response))
            .catch(() => reject());
            // .catch(reject => {console.log(reject)})
        }

        downloadFile();
       }

我不确定你为什么要使用这个模式,但是如果你想确保第二个承诺可以访问第一个调用中定义的东西,你必须确保不要在第一个承诺解决之前调用第二个承诺。 也许是这样的:

// ...
         axios
            .post('http://api.resmush.it/', formData, { headers: { 'Content-Type': 'multipart/form-data' } })
            .then(response => {
              image.url = response.data.dest;
              // not sure what you want to do here, I just pasted your code
              console.log(image.url);
              function downloadFile() {
                  axios.get('http://par3.static.resmush.it/1e5b76fc993169757c1319c027f5dca3/insta_logo.jpg')
                     .then(response => {console.log(response)})
                     // ...
              }

              downloadFile();
            })