2016-09-24 96 views
0

我想在Typescript中將函數的值傳遞給外部。從Typescript中的函數傳遞變量

我嘗試了很多方法,例如聲明全局變量,返回函數值等的東西,但它不起作用。

我想也許我的語法錯了。你能幫忙嗎?代碼如下,以供參考。 非常感謝。

this.platform.ready().then(() => { 

     FCMPlugin.getToken(
        function (token) { 
         console.log(token); 
        }, 
        function (err) { 
         console.log('error retrieving token: ' + err); 
        } 
     ); 

     console.log(token); //I would to pass the token value to here 
    } 
+1

有沒有辦法移動成功回調內的代碼?在我看來,它甚至可能在獲得令牌之前運行你的代碼。 –

+1

可能重複的[如何返回來自異步調用的響應?](http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call) –

回答

0

怎麼樣定義一個外部變量?

像這樣:

this.platform.ready().then(() => { 

var myToken; 

    FCMPlugin.getToken(
       function (token) { 
        console.log(token); 

myToken= token; 

       }, 
       function (err) { 
        console.log('error retrieving token: ' + err); 
       } 
    ); 

    console.log(myToken); //I would to pass the token value to here 
} 

如果爲gettoken是異步,ü可以觸發事件或者(僅回調)做回調

this.platform.ready().then(() => { 


    FCMPlugin.getToken(
       function (token) { 
        console.log(token); 
        myCallback(token); 
        $('html').trigger('tokenReady',token); 
       }, 
       function (err) { 
        console.log('error retrieving token: ' + err); 
       } 
    ); 

    function myCallback(myToken){ 

    console.log(myToken); 

    } 

} 

$('html').on('tokenReady',function(e,token){ 

myCallback(token); 

}); 

第三個版本:

this.platform.ready().then(() => { 


    FCMPlugin.getToken(
       function (token) { 
        console.log(token); 
        myCallback(token); 
       }, 
       function (err) { 
        console.log('error retrieving token: ' + err); 
       } 
    ); 

    function myCallback(myToken){ 

    console.log(myToken); 

    } 

} 
+0

如果'getToken'是異步的,這將不起作用,因爲'console.log'語句將在分配給'myToken'之前運行。 –

+0

那麼你應該使用回調或觸發一個事件(我編輯) – Francesco

+0

非常感謝!但似乎有一些打字錯誤。 [ts]找不到$ [ts]找不到名字'myCallBack' –

0
FCMPlugin.getToken 

異步執行,所以你會我在令牌回調之前沒有令牌值。

此外,因爲它異步執行,所以您的第二個console.log語句將在回調之前觸發,因此您無法獲取令牌值,因爲它尚未在該點返回。

簡單的答案是移動你的代碼來處理你的第一個console.log語句在你的成功回調中返回的令牌。