Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Prototype.then isn';不被使用_Javascript_Promise_Bluebird - Fatal编程技术网

Javascript Prototype.then isn';不被使用

Javascript Prototype.then isn';不被使用,javascript,promise,bluebird,Javascript,Promise,Bluebird,我已经被承诺难住了一段时间:我在一个异步函数的post请求中使用承诺,然后使用.then()显示它的结果,并将其放入res.json()中。问题是,我根本看不到使用.then() var transcribe = function(){ return new Promise(function(resolve, reject){ speech.startRecognition(aux.gsUri, aux.fileType, function(err, operation,

我已经被承诺难住了一段时间:我在一个异步函数的post请求中使用承诺,然后使用
.then()
显示它的结果,并将其放入
res.json()
中。问题是,我根本看不到使用
.then()

var transcribe = function(){
    return new Promise(function(resolve, reject){
        speech.startRecognition(aux.gsUri, aux.fileType, function(err, operation, res) {
            if (err) {
                console.error(err);
            }
            else {
                operation.on('error', function(err){
                    console.error(err);
                }).on('complete', function(transcript){
                    var returnAllTranscripts = [];
                    transcript.forEach(function(block){
                        returnAllTranscripts.push(block.transcript);
                    });
                    return returnAllTranscripts;
                });
            }
        });
    })
}
transcribe().then(function(data){      //transcribe() function works
    console.log("Now on THEN");        //but not .then(), logging here
    res.json(data)
});;

你需要下定决心/拒绝你的承诺,以实现你承诺链的目标

var transcribe = function(){
  return new Promise(function(resolve, reject){
    speech.startRecognition(aux.gsUri, aux.fileType, function(err, operation, res) {
      if (err) {
        console.error(err);
        return reject(err); // <-- REJECT ERROR HERE
      } else {
        operation.on('error', function(err){
          console.error(err);
          return reject(err); // <-- REJECT ERROR HERE
        }).on('complete', function(transcript){
          var returnAllTranscripts = [];
          transcript.forEach(function(block){
            returnAllTranscripts.push(block.transcript);
          });
          return resolve(returnAllTranscripts); <-- RESOLVE "THEN" VALUE HERE
        });
      }
    });
  })
}

transcribe().then(function(data){      //transcribe() function works
  console.log("Now on THEN");        //but not .then(), logging here
  res.json(data)
})
.catch(err => console.log(err));
var transcribe=function(){
返回新承诺(功能(解决、拒绝){
speech.startRecognition(aux.gsUri、aux.fileType、function(err、operation、res){
如果(错误){
控制台错误(err);

退货拒绝(err);//你需要了解承诺如何起作用的基本原理。你不会在任何地方解决/拒绝承诺,这样你就无法实现。然后/。抓住你的承诺链。问题是什么?@VtoCorleone啊,我假设我可以忽略这两个参数,返回我从演讲中得到的任何东西。starRecognition。谢谢。@Mati then()没有被调用。非常有效,谢谢!它实际上在没有使用“return”的情况下也有效。不需要使用“return”语句,但我使用它隐式地表示该方法已经完成。