возврат внешнего fn после асинхронной внутренней функции возвращает [ui-router и htmlservice]

0

Я пытаюсь работать с ui-router с клиентским js HtmlService в сценарии приложений. После исчерпывающих попыток я застрял в простой проблеме js

.state('state1', {
        url: base+'?page=state1_KB',
        views: {
                'content':{
                     template: 
                     function(){
                         google.script.run.withFailureHandler(notemp).withSuccessHandler(temp).include(obj); 

                         function temp(view){
                             console.log(view); //This logs successfully.
                             return view; //This works too I suppose
                           }
                         return temp(view); //This doesn't work obviously
                        },
                     controller: 'state1Controller'
                  }
                 }
    })

include(obj) выбирает шаблон и возвращает его к temp(view). Мне нужно вернуть значение из temp(view). Но, очевидно, он ничего не вернет.

Как вернуть внешнюю функцию после того, как temp(view) был вызван google.script.run?

Для чистого энтузиаста JS, я думаю, это очень похоже на это:

function outer(){
  var a = "b";
  setTimeout(function(){console.log("this is Log"); a = 'c';}, 2000);
  return a;
}

С ui-router или угловой точки зрения, есть ли что-то более простое, что я мог бы сделать, чтобы достичь того, что я здесь пытаюсь?

  • 0
    Как вы думаете, это значение, возвращаемое external () во втором примере?
  • 0
    для примера js, который я привел, это должно быть "b".
Теги:
angular-ui-router
google-apps-script

1 ответ

0

Что-то вроде этого должно работать

    templateProvider: 
             function($q){
                        var deferred = $q.defer();
                        var temp = function(view){
                             console.log(view);
                             deferred.resolve(view);
                        }
                        google.script.run
                                .withFailureHandler(notemp)
                                .withSuccessHandler(temp)
                                .include(obj);

                        return deferred.promise;
                     },
                     controller: 'state1Controller'
                  }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню