从Typescript中的函数传递变量

时间:2016-09-24 17:22:28

标签: javascript 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
    }

2 个答案:

答案 0 :(得分: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);

  }

}

答案 1 :(得分:0)

FCMPlugin.getToken

异步执行,因此在您点击获取令牌回调之前,您将没有令牌值。

此外,当它以异步方式执行时,您的第二个console.log语句将在回调之前触发,因此您将无法获得令牌值,因为此时尚未返回该值。

简单的答案是移动代码来处理成功回调中返回的令牌,其中有第一个console.log语句。