Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex Flex Async Madness-是否可以等待rpc.Responder在进入下一个语句之前获得响应?_Apache Flex_Actionscript 3 - Fatal编程技术网

Apache flex Flex Async Madness-是否可以等待rpc.Responder在进入下一个语句之前获得响应?

Apache flex Flex Async Madness-是否可以等待rpc.Responder在进入下一个语句之前获得响应?,apache-flex,actionscript-3,Apache Flex,Actionscript 3,我觉得我一定做错了。我有一个函数,它应该基于API对可用字段的描述来构造查询。以下是我得到的: var query_fields = getQueryFieldsFor(sobject_name); // Need query fields for the next statement, which actually does the query 我知道这行不通,我想我明白为什么。然而,我一直遇到这种类型的问题,我相信我只是在思考/设计错误。那么这里有什么更好的模式呢?如果您能对此有所了解,

我觉得我一定做错了。我有一个函数,它应该基于API对可用字段的描述来构造查询。以下是我得到的:

var query_fields = getQueryFieldsFor(sobject_name);
// Need query fields for the next statement, which actually does the query


我知道这行不通,我想我明白为什么。然而,我一直遇到这种类型的问题,我相信我只是在思考/设计错误。那么这里有什么更好的模式呢?如果您能对此有所了解,我将不胜感激。非常感谢。

最好将您的函数外部化,然后执行下一行代码:

public function getQueryFieldsFor(sObject:String):String
{
    var responder:Responder = new Responder( onResult, onFault);
    app.connection.describeSObject(sObject, responder);
}

private function onResult(result:DescribeSObjectResult):void
{
        var returnFields:String = '';
        for ( var field:Field in result.fields ){
            if(field.active){
                returnFields.concat(field.name+',')
            }
        }
     returnFields.slice(0, returnFields.length-1); //remove last comma
     queryFields = returnFields;
}
您的主要问题不是代码,而是缺乏异步思考。您不能有一个名为“getQueryFields”的函数立即返回它。您要做的是以请求/响应的方式思考。您试图获取一些数据,向服务发出请求,获取数据,更新属性,然后将其绑定到重新绘制的视图。这是做任何webapp的正确方法


您还可以查看像和这样的应用程序框架,因为它可以帮助您管理这些情况。Parsley还有一个任务库,可以让您一个接一个地执行多个异步任务。

最好将您的函数外部化,然后执行下一行代码:

public function getQueryFieldsFor(sObject:String):String
{
    var responder:Responder = new Responder( onResult, onFault);
    app.connection.describeSObject(sObject, responder);
}

private function onResult(result:DescribeSObjectResult):void
{
        var returnFields:String = '';
        for ( var field:Field in result.fields ){
            if(field.active){
                returnFields.concat(field.name+',')
            }
        }
     returnFields.slice(0, returnFields.length-1); //remove last comma
     queryFields = returnFields;
}
您的主要问题不是代码,而是缺乏异步思考。您不能有一个名为“getQueryFields”的函数立即返回它。您要做的是以请求/响应的方式思考。您试图获取一些数据,向服务发出请求,获取数据,更新属性,然后将其绑定到重新绘制的视图。这是做任何webapp的正确方法


您还可以查看像和这样的应用程序框架,因为它可以帮助您管理这些情况。Parsley还有一个任务库,可以让你一个接一个地执行多个异步任务。

什么是
app.connection.descripesObject
?它是对salesforce.com API的调用,给定一个s[alesforce]对象名(如“Account”),它返回一组关于该对象属性的不同数据,包括一个fields属性,它是一个Field对象数组。我认为您想要实现的是Flex Sync疯狂。什么是
app.connection.descripesObject
?它是对salesforce.com API的调用,给定一个s[alesforce]对象名(如“Account”),它返回一组关于该对象属性的不同数据,包括一个fields属性,它是一个Field对象数组。我认为您想要实现的是Flex Sync疯狂。