2014-09-12 21 views
0

我試圖在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 
    }; 
} 

回答

1

如果你真的即將約JavaScript method setTimeout,它會幫助,如果你要添加的東西究竟正在試圖做一些代碼示例,給這是一種編程Q &一個網站和所有。

如果您使用Worklight Studio演示您的應用程序,則不需要實現超時。
打開應用程序,登錄,訂閱通知,關閉應用程序。然後,右鍵單擊適配器並選擇運行方式>調用Worklight過程並在文本中添加用戶名(例如:「myuser」,「mytext」)。就是這樣...通知將被髮送。每當你想要它被髮送。

否則,
有沒有這樣的事情setTimeout爲適配器程序...

在這裏看到:How to increase the adapter procedure timeout value in Worklight?

要超時設置爲一個程序,適配器XML文件中:

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

請查看IBM Worklight Knowledge Centertraining modules

+0

我有推演示的問題。我需要演示此Worklight功能,並且希望在調用適配器過程4-5秒後保存發送消息。 – alexeybondarenko 2014-09-12 15:02:28

+0

你的代碼,用你的代碼編輯問題。 – 2014-09-12 15:03:48

+0

我已經添加了代碼示例。 – alexeybondarenko 2014-09-12 15:09:47

0

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

由於適配器不是瀏覽器,而是服務器可運行代碼,因此它沒有全局窗口對象,因此您沒有setTimeout API。

相關問題