簡體   English   中英

如何使函數兌現承諾

[英]How to make a function return a promise

我想在調用此函數時返回downloadURL ,它是一個firebase上傳函數。

 import { storage } from "./base"; import firebase from "firebase"; function uploadFile(file, metadata) { return new Promise((resolve, reject) => { const task = storage.child(`/${file.name}`).put(file, metadata); task.on( firebase.storage.TaskEvent.STATE_CHANGED, function(snapshot) { var progress = (snapshot.bytesTransferred / snapshot.totalBytes) * 100; console.log(progress); }, function(error) { switch (error.code) { case "storage/unauthorized": break; case "storage/canceled": break; case "storage/unknown": break; default: break; } reject(error); }, function() { task.snapshot.ref.getDownloadURL().then(function(downloadURL) { resolve(downloadURL); console.log(downloadURL); }); }, ); }); } export { uploadFile }; 

我試過了,它沒有返回downloadURL

您可以簡單地嘗試如下操作:

  1. 將文件導入您需要的位置。
  2. 然后使用相關參數調用該函數。
  3. 在promise中使用then方法來獲取已解決的downloadUrl

    uploddFile(file, data).then(downloadUrl => console.log(downloadUrl) );

嘗試這個。

         import { storage } from "./base";
         import firebase from "firebase";

         function uploadFile(file, metadata) {
          return new Promise((resolve, reject) => {
          const task = storage.child(`/${file.name}`).put(file, metadata);

          task.on(
           firebase.storage.TaskEvent.STATE_CHANGED,
            function(snapshot) {
             var progress = (snapshot.bytesTransferred / snapshot.totalBytes) * 100;
        console.log(progress);
      },
      function(error) {
        switch (error.code) {
          case "storage/unauthorized":
            break;
          case "storage/canceled":
            break;
          case "storage/unknown":
            break;
          default:
            break;
        }
        reject(error);
      },
        task.snapshot.ref.getDownloadURL().then(function(downloadURL) {
            resolve(downloadURL);
          console.log(downloadURL);
        });
      ,
    );
  });
}

想法是,一旦成功完成getDownloadURL,便包括resolve方法。 然后可以通過調用上面的答案中提到的來檢索

     uploadFile(file, metaData)
     .then((download) => console.log(downloadURL)) ; // Or whatever you want to do wth downloadURL

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM