在下面的 Angular Material 代码中了解此延迟语法及其用途

Understanding this deferred syntax and its purpose in the below Angular Material code

本文关键字:语法 延迟 了解 Angular Material 代码 在下面      更新时间:2023-09-26

Angular 材质的自动完成演示代码具有以下我试图理解的代码:

function querySearch (query) {
  var results = query ? self.states.filter( createFilterFor(query) ) : self.states,
      deferred;
  if (self.simulateQuery) {
    deferred = $q.defer();
    $timeout(function () { deferred.resolve( results ); }, Math.random() * 1000, false);
    return deferred.promise;
  } else {
    return results;
  }
}

具体来说,, deferred部分在var results = query ? self.states.filter( createFilterFor(query) ) : self.states, deferred;中的作用是什么?此时,$q.defer();甚至尚未定义deferred对象。

这是一个

var声明,results变量有一个巨大的初始化器,而deferred变量没有初始化器。

它同样可以写

var results = query ? self.states.filter( createFilterFor(query) ) : self.states;
var deferred;

var results, deferred;
results = query ? self.states.filter( createFilterFor(query) ) : self.states;