Worklight 6.1-适配器调用中的requireJS

Worklight 6.1-适配器调用中的requireJS,requirejs,ibm-mobilefirst,worklight-adapters,Requirejs,Ibm Mobilefirst,Worklight Adapters,我想用RequireJS将数据检索与localstorage synchro分开。 为此,我有一个模块从适配器获取数据并将其存储到window.myData对象。 然后,当loadSuccess完成时,我传递另一个模块来运行从window.myData到localStorage的同步 当我调用AdapterService.retrieveRoomsFromServer(“john”、“doe”)时,对worklight的调用已完成,但出现了一个javascript错误: TypeError: C

我想用RequireJS将数据检索与localstorage synchro分开。 为此,我有一个模块从适配器获取数据并将其存储到window.myData对象。 然后,当loadSuccess完成时,我传递另一个模块来运行从window.myData到localStorage的同步

当我调用AdapterService.retrieveRoomsFromServer(“john”、“doe”)时,对worklight的调用已完成,但出现了一个javascript错误:

TypeError: Cannot call method 'checkEndSynchro' of undefined
未定义的似乎是RequireJS define()的SynchronizeLocalStorage传入函数参数

My AdapterService.js:

define([ 
    "jquery", 
    "synchronizeLocalStorage"
], function( $, SynchronizeLocalStorage) {

return {

    retrieveRoomsFromServer: function(username, password) {
        this._invokeProcedureGetListRooms(username, password);
    },

    _invokeProcedureGetListRooms: function(user, password) {
        var invocationData = {
                adapter : 'MyHTTPAdapter',
                procedure : 'getListRooms',
                parameters : [user, password]
        };
        var options = {
            onSuccess : this._loadSuccess,
            onFailure : this._loadFailure,
            invocationContext: this
        };
        WL.Client.invokeProcedure(invocationData, options);
    },

    _loadSuccess: function(result) {
        var items = result.invocationResult.array;
        var self = result.invocationContext;
        WL.Logger.debug('loading users rooms');
        for (var i = 0; i < items.length; i++) {
            var id = items[i].id;
            var name = items[i].name;
            var room = {'id':id, 'name':name};
            window.myData.myRooms.push(room);
        }
        window.flags.myRoomsLoaded = true;
        SynchronizeLocalStorage.checkEndSynchro();
    },

        _loadFailure: function(result) {}
       };
});
define([
“jquery”,
“同步本地存储”
],函数($,SynchronizeLocalStorage){
返回{
retrieveRoomsFromServer:函数(用户名、密码){
这._调用过程文件室(用户名、密码);
},
_invokeProcedureGetListRooms:函数(用户、密码){
变量调用数据={
适配器:“MyHTTPAdapter”,
过程:“getListRooms”,
参数:[用户,密码]
};
变量选项={
onSuccess:这是。\加载成功,
onFailure:这是。加载失败,
调用上下文:这个
};
WL.Client.invokeProcess(调用数据、选项);
},
_loadSuccess:函数(结果){
var items=result.invocationResult.array;
var self=result.invocationContext;
WL.Logger.debug(“加载用户室”);
对于(变量i=0;i

谢谢您的帮助。

您如何在适配器中准确地使用
requireJS
?适配器中不能包含外部库。RequireJS用于模块化加载。。。适配器的情况并非如此,因为可能只有1个XML文件和1个.js文件


一旦部署适配器,它将成为Java对象,这意味着它将无法使用外部资源,因此在此上下文中使用requireJS没有任何意义。

我在客户端代码中使用requireJS调用适配器的过程,使用WL.client.invokeProcedure。