Javascript Prototype.then isn';不被使用
我已经被承诺难住了一段时间:我在一个异步函数的post请求中使用承诺,然后使用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,
.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”语句,但我使用它隐式地表示该方法已经完成。