在没有连接到适配器时阻止 "onSuccess" 触发?
Preventing "onSuccess" firing when there is no connection to an adapter?
使用 MobileFirst v6.3,每当我使用 WL.Client.invokeProcedure 与适配器通信时,onSuccess 函数总是会触发,无论实际成功与否。这包括移动设备完全离线的情况。
onConnectionFailure 仍然按预期运行,在适配器超时后触发,但触发 onSuccess 基本上没有用。
示例代码:
var invocationData = {
adapter : 'MaximoLogin',
procedure : 'setValue',
parameters : [itemid,value]
};
WL.Client.invokeProcedure(invocationData, {
onSuccess : valueSuccess(itemid),
onConnectionFailure: connectivityFailure,
onFailure : connectFailure
});
如何防止这种情况发生?
您应该按如下方式更新您的代码:
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
.
使用 MobileFirst v6.3,每当我使用 WL.Client.invokeProcedure 与适配器通信时,onSuccess 函数总是会触发,无论实际成功与否。这包括移动设备完全离线的情况。
onConnectionFailure 仍然按预期运行,在适配器超时后触发,但触发 onSuccess 基本上没有用。
示例代码:
var invocationData = {
adapter : 'MaximoLogin',
procedure : 'setValue',
parameters : [itemid,value]
};
WL.Client.invokeProcedure(invocationData, {
onSuccess : valueSuccess(itemid),
onConnectionFailure: connectivityFailure,
onFailure : connectFailure
});
如何防止这种情况发生?
您应该按如下方式更新您的代码:
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
.