2017-11-04 49 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); 
    } 
    },