Apache flex Flex Async Madness-是否可以等待rpc.Responder在进入下一个语句之前获得响应?
我觉得我一定做错了。我有一个函数,它应该基于API对可用字段的描述来构造查询。以下是我得到的: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 我知道这行不通,我想我明白为什么。然而,我一直遇到这种类型的问题,我相信我只是在思考/设计错误。那么这里有什么更好的模式呢?如果您能对此有所了解,
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疯狂。