如何将异步调用中的数据插入到push方法中

时间:2015-12-19 22:33:17

标签: javascript variables asynchronous push matomo

我是https://github.com/jackspirou/clientjs的用户。它创建用户访问我的网站的指纹。我也是开源分析工具Piwik的用户。我试图实现其功能之一 - http://developer.piwik.org/guides/tracking-javascript-guide#user-id

我的代码如下:

var client = new ClientJS();
var fingerprint = client.getFingerprint();

var _paq = _paq || [];
_paq.push(['setUserId', fingerprint]);
_paq.push(['trackPageView']);

它不起作用。上面代码插入到我的数据库中的数据是" NULL"对于UserID字段。这可能是getFingerprint()异步的问题。我的问题是 - 如何绕过它?

1 个答案:

答案 0 :(得分:0)

您必须查看client.getFingerprint()文档。最有可能是这样的:

client.getFingerprint(function(result, err) {
    // check for err
    // do something with result
    var _paq = _paq || [];
    _paq.push(['setUserId', result]);
    _paq.push(['trackPageView']);
});

注意,我只是猜测返回的数据是错误的,但它可能在对象上。另外,我猜测它接受回调函数作为一个单一参数。