使用MobileFirst v6.3,每当我使用WL.Client.invokeProcedure与适配器通信时,onSuccess函数总是会触发,无论实际成功与否。这包括移动设备完全脱机的时间。
onConnectionFailure仍然按预期运行,在适配器超时后触发,但是onSuccess fire基本没用。
示例代码:
var invocationData = {
adapter : 'MaximoLogin',
procedure : 'setValue',
parameters : [itemid,value]
};
WL.Client.invokeProcedure(invocationData, {
onSuccess : valueSuccess(itemid),
onConnectionFailure: connectivityFailure,
onFailure : connectFailure
});
如何防止这种情况发生?
答案 0 :(得分:3)
您应该按如下方式更新您的代码:
var invocationData = {
adapter : 'MaximoLogin',
procedure : 'setValue',
parameters : [itemid,value]
};
WL.Client.invokeProcedure(invocationData, {
onSuccess : valueSuccess,
onConnectionFailure: connectivityFailure,
onFailure : connectFailure,
invocationContext : {
itemid: itemid
}
});
// your success function
function valueSuccess(response) {
// get the item id from the invocationContext object
var successItemId = response.invocationContext.itemid;
// handle your success ...
}
始终调用valueSuccess
函数的原因是因为您始终在调用它,即:valueSuccess(itemid)
。 onSuccess
采用回调函数,您正在调用其始终运行的函数。
如果您想将某个变量传递给回调函数,可以使用invocationContext
这个对象,该对象将传递给onSuccess
和onFailure
的回调函数。