2016-09-24 60 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语句在你的成功回调中返回的令牌。