Было бы лучше вывести внешние функции и выполнить следующую строку кода после факта:
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", которая будет возвращать ее немедленно.То, что вы хотите сделать, это думать в форме запроса / ответа.Вы пытаетесь получить некоторые данные, к службе делается запрос, возвращает данные, обновляет свойство, которое затем связывается с представлением, которое перерисовывается.Это правильный способ сделать любое веб-приложение.
Для вас также может быть полезно взглянуть на каркасы приложений, такие как RobotLegs и Parsley , поскольку они помогают вам управлять этими приложениями.ситуации.У Parsley также есть библиотека задач, которая позволяет вам выполнять несколько асинхронных задач одну за другой.