2017-11-04 50 views
0

聚合物1 *和火力地堡如何調用鐵AJAX異步計算中結合

怎樣才能做一個異步操作,其中,this.$$('#ironAjax').generateRequest();return '{"Authorization": "Bearer ' + token + '"}';後調用返回頭之後?我必須返回標題值,然後調用iron-ajax請求。

<iron-ajax 
    url="[[HOST]][[LISTINGS]]?foo=foo" 
    id="ironAjax" 
    handle-as="json" 
    headers="[[setAuth()]]", 
    on-error="errorHandler" 
    loading="{{ironLoading}}" 
    last-response="{{listings}}"></iron-ajax> 

pageActivated: function(activated) { 
    if (activated) { 
     this.setAuth(); 
    } 
    }, 

setAuth:()=> { 
    firebase.auth() 
    .onAuthStateChanged((token) => { 
     return '{"Authorization": "Bearer ' + token + '"}'; 

     this.$$('#ironAjax').generateRequest(); // NEED TO CALL AFTER 
               // HEADER IS SET 

    }) 

回答

0

我能夠用直接修改標題來處理這種情況。希望這可以幫助其他人在同樣的情況:

行爲:

<script> 
    AuthIronAjax = { 
    rawSetAuth: (user, ajax) => { 
     if (user) { 
     user.getIdToken().then((token) => { 
      ajax.headers['Authorization'] = 'Bearer ' + token; 
      ajax.generateRequest(); 
     }); 
     } 
    }, 

    setAuth: function (ajax) { 
     firebase.auth() 
     .onAuthStateChanged((user)=> this.rawSetAuth(user, ajax)); 
    } 
    }; 
</script> 

元素,它是用來注:鐵頁面正在用一個隱含的主機屬性綁定activated使用:

observers: ['pageActivated(activated)'], 

    behaviors: [AuthIronAjax], 

    pageActivated: function(activated) { 
    if (activated) { 
     this.setAuth(this.$.ironAjax); 
    } 
    },