Prototype.then没有被使用

时间:2017-02-27 19:11:40

标签: javascript promise bluebird

我已经被承诺了一段时间:我在异步函数的post请求中使用bluebird Promise,然后使用.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)
});;

1 个答案:

答案 0 :(得分:0)

你需要解决/拒绝你的Promise来点击你的承诺链的then / catch。

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));