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方法。

我的javascript程序有问题

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;



}

//......