javascript中的同步
我的javascript程序有问题javascript中的同步,javascript,function,Javascript,Function,我的javascript程序有问题 globID = oController.getGlobalId(); console.log(globID); //instructions using globID 调用函数时,undefined的值被指定为globID。 在日志a中有以下顺序: 1-console.logglobID; 2-console.logID 是否有一种解决方案来执行函数,然后将实际值分配给globID 非常感谢 致以最诚挚的问候。您尚未正确定义getGlobalId方法。
globID = oController.getGlobalId();
console.log(globID);
//instructions using globID
调用函数时,undefined的值被指定为globID。
在日志a中有以下顺序:
1-console.logglobID;
2-console.logID
是否有一种解决方案来执行函数,然后将实际值分配给globID
非常感谢
致以最诚挚的问候。您尚未正确定义getGlobalId方法。它应该是这样的:
oController.getGlobalId = function () {
//instructions
console.log('in function', ID);
return ID;
}
然后
将正常工作,并按正确顺序提供两个控制台日志
我无法创建小提琴,因为odata服务必须在特定环境中执行,代码如下: 他认为:
globID = oController.getGlobalId();
console.log('view',globID);
//instructions using globID
在控制器中:
getGlobalId:function() {
oModel = this.getModel();
target =this.getSystemName();
oModel.read(/'SolutionManager(\'0050569b-0081-1ee1-9ff7-a45fec113fb6\')/TechnicalSystemsStatus',null, null, true, function(oData,oResponse){
for (var y = 0; y < number; y++) {
if ( oData.results[y].ID == target)
{
globID = oData.results[y].GlobalID;
console.log('controller',globID);
return globID;
}
//......
控制台在两行显示之间有一个小的延迟:
日志:viewundefined
日志:控制器0050569B-0081-1ee1-9fb6-27bed6190dcf
我确信延迟是由odata电话引起的,但我没有找到解决办法
感谢tewathia在函数中所做的努力,我有一些说明可以为oData服务带来ID的价值,它工作正常,不是吗应该是oController.getGlobalId=function?它对我来说工作正常。请参阅感谢tewathia,但它仍然不适用于我getGlobalId是放置在控制器中的函数,ir通过odata服务带来ID值,然后,在视图中,我将使用此值,因此有两个不同的JS文件。如果有两个不同的文件,则无所谓。只需确保函数在调用时已正确定义即可。“internal”console.log将在调用getGlobalId函数时打印您的ID值,甚至在返回您分配给globIdHi的值之前,这不是函数的定义问题。但我在奥达塔有个问题instructions@user3134838你能编一把小提琴来重现这个问题吗?从目前的情况来看,代码没有任何问题看起来像是异步调用问题……回调函数仅在odata调用完成后执行。但在此之前,执行getGlobalId函数的其余部分,而不返回任何内容,因此您的GlobalID保持未调整状态,请写入oController.getGlobalId;而不是globID=oController.getGlobalId;,因为您已经在分配globID=oData.results[y].GlobalID;函数内部。如果没有var关键字,globID将是一个全局变量感谢tewathia,但这并不能解决问题:因为globID是一个局部变量,在getGlobalID functionUse window中声明。globID=oData.results[y]。GlobalID;然后,我再次异步调用发出相同的延迟
globID = oController.getGlobalId();
console.log('view',globID);
//instructions using globID
getGlobalId:function() {
oModel = this.getModel();
target =this.getSystemName();
oModel.read(/'SolutionManager(\'0050569b-0081-1ee1-9ff7-a45fec113fb6\')/TechnicalSystemsStatus',null, null, true, function(oData,oResponse){
for (var y = 0; y < number; y++) {
if ( oData.results[y].ID == target)
{
globID = oData.results[y].GlobalID;
console.log('controller',globID);
return globID;
}
//......