我尝试在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
};
}
答案 0 :(得分:1)
如果您实际上关于JavaScript method setTimeout
,那么如果您要添加一些代码示例正是,那将会有所帮助,因为这是一个编程Q& ;一个网站和所有。
如果您使用Worklight Studio演示应用程序,则无需实施超时 打开应用程序,登录,订阅通知,关闭应用程序。然后,右键单击适配器并选择Run As>调用Worklight过程并在文本中添加用户名(例如:“myuser”,“mytext”)。就是这样......通知将被发送。无论什么时候你想发送它。
否则,
适配器程序没有setTimeout
这样的东西......
见这里:How to increase the adapter procedure timeout value in Worklight?
在适配器XML文件中设置过程超时:
<procedure name="nameHere" requestTimeoutInSeconds="valueHere"/>
答案 1 :(得分:0)
setTimeout API属于全局窗口对象。基本上使用它的方式是window.setTimeout()。
的快捷方式由于适配器不是浏览器而是服务器可运行代码,因此它没有全局窗口对象,因此您没有setTimeout API。