如何等待异步呼叫以一信号API完成



我正在使用一信号API进行通知。我想从那里获得API的用户ID,以下是我的代码。

function setNotificationPermission()
{
    var id ;
    try
    {   
          OneSignal.push(["getUserId", function(userId) { 
          console.log("OneSignal User ID inside:"+ userId); 
            id = userId;
    }]); 
         console.log("OneSignal User ID outside:"+ id);
         window.parent.postMessage("Player ID"+id, "http://example.com");
    }
    catch(e){}
}  

我得到的答案如下

OneSignal User ID outside:
OneSignal User ID inside: f39fd4f1-406f-4c96-8365-5a471f77da3d

因为我称为一个信号的方法是异步的,因此我的window.parent.postmessage()方法在得到响应之前被执行。请告诉我如何处理?表示如何等到我的nesignal.push()完全呼叫

,因为Onesignal's getUserId()异步运行,因此您的setNotificationPermission()必须 or 都会异步。这意味着setNotificationPermission()必须"等待" getUserId()在能够回复之前完成。

Oneignal的getUserId()功能接受回调并返回承诺,因此您可以:

  • 选项1:getUserId()回调中调用postMessage() OneSignal.push(["getUserId", function(userId) { window.parent.postMessage(userId); });

  • 选项2: getUserId() CC_9 promise解决方案: OneSignal.push(function() { OneSignal.getUserId() .then(function(userId) { window.parent.postMessage(userId);
    }); });

第一个选项是最直接的。第一个选项调用 postMessage() 在回调getUserId()中检索了用户ID。

相关内容

  • 没有找到相关文章

最新更新