Javascript 完成语音识别后,如何执行(if)语句

Javascript 完成语音识别后,如何执行(if)语句,javascript,angularjs,ionic-framework,cordova-plugins,Javascript,Angularjs,Ionic Framework,Cordova Plugins,当变量comp仍然为空时,它比较变量comp。它应该先获取语音识别器值。我怎样才能解决这个问题?我怎样才能让它等到语音识别器完成它的工作 .controller('LearnCtrl', function($scope , $ionicSlideBoxDelegate, Slides ) { $scope.slides = Slides.all(); $scope.hear = function() { navigator.tts.startup(); navigator.t

当变量comp仍然为空时,它比较变量comp。它应该先获取语音识别器值。我怎样才能解决这个问题?我怎样才能让它等到语音识别器完成它的工作

.controller('LearnCtrl', function($scope , $ionicSlideBoxDelegate, Slides ) {

$scope.slides = Slides.all();

$scope.hear = function() {
    navigator.tts.startup();
    navigator.tts.setLanguage('fr');

    navigator.tts.speak($scope.slides[$ionicSlideBoxDelegate.currentIndex()].name);
 }

$scope.spell = function() {
    var maxMatches = 1;
    var promptString = "Speak now";
    var language ='fr-FR'
    var comp ="";

    window.plugins.speechrecognizer.startRecognize(function(result) {
        comp=result ; 
    }, function(error) {
        alert("connexion lost"+error);
    }, maxMatches, promptString, language);


    if (comp==$scope.slides[$ionicSlideBoxDelegate.currentIndex()].name){
        alert('good job')
    } else {
        alert('try again');
    }

}

它很可能是异步的,所以请尝试将比较放在传递到startReconnive的函数中

window.plugins.speechrecognizer.startRecognize(function(result) {
    comp=result;
    if (comp==$scope.slides[$ionicSlideBoxDelegate.currentIndex()].name){
      alert('good job')
    } else {
      alert('try again');
    }
}, function(error) {
    alert("connexion lost"+error);
}, maxMatches, promptString, language);

大概
speak
api有回调,您可以像使用其他异步api一样使用回调。还要记住,角度以外的事件需要使用
$apply()