在Worklight适配器过程中使用setTimeout



我已尝试在Worklight适配器过程中使用setTimeout。它不起作用。

WLSE0099E: An error occurred while invoking procedure  [project BusinessBank]PushAdapter/submitNotificationFWLSE0100E:  parameters: [project BusinessBank]
ReferenceError: "setTimeout" is not defined. (PushAdapter-impl.js#37)

调用适配器过程后,我需要保持发送推送通知。这是演示的需要。我的代码示例:

WL.Server.createEventSource({
    name: 'PushEventSource',
    onDeviceSubscribe: 'deviceSubscribeFunc',
    onDeviceUnsubscribe: 'deviceUnsubscribeFunc',
    securityTest:'AngularStarter-strong-mobile-securityTest'
});
function deviceSubscribeFunc(userSubscription, deviceSubscription){}
function deviceUnsubscribeFunc(userSubscription, deviceSubscription){}
function submitNotification(userId, notificationText) {
    var userSubscription = WL.Server.getUserNotificationSubscription('PushAdapter.PushEventSource', userId);
    if (userSubscription == null) {
        return { result: "No subscription found for user :: " + userId };
    }
    var badgeDigit = 1,
        notification = WL.Server.createDefaultNotification(notificationText, badgeDigit, {custom: "data"});
    setTimeout(function() {
        WL.Logger.debug("submitNotification >> userId :: " + userId + ", text :: " + notificationText);
        WL.Server.notifyAllDevices(userSubscription, notification);
    },5000);
    return {
        result: "Notification sent to user :: " + userId
    };
}

如果你真的在谈论JavaScript方法setTimeout,如果你添加一些代码示例来说明你正试图做什么,这将有所帮助,因为这是一个编程问答;一个网站和所有的。

如果使用Worklight Studio演示应用程序,则无需实现超时
打开应用程序,登录,订阅通知,关闭应用程序。然后,右键单击适配器并选择Run As>Invoke Worklight procedure,然后以文本形式添加用户名(例如:"myuser"、"mytext")。就这样…通知将被发送。无论何时发送。

否则,
适配器过程不存在setTimeout这样的东西。。。

请参阅此处:如何增加Worklight中的适配器过程超时值?

要为过程设置超时,请在适配器XML文件中:

<procedure name="nameHere" requestTimeoutInSeconds="valueHere"/>

请查看IBM Worklight知识中心和培训模块。

setTimeout API属于全局窗口对象。基本上使用它的方式是window.setTimeout().的快捷方式

由于适配器不是浏览器,而是服务器可运行的代码,因此它没有全局窗口对象,因此您没有setTimeout API。

最新更新