【发布时间】:2018-01-17 11:23:01
【问题描述】:
function recursiveAsyncReadLine(){
rl.question("name : ", function(answer) {
if(answer==="exit"){
rl.close();
}
var kitty = new Kitten({name : answer});
kitty.save(function(err, kitty){
if(err){
throw err;
}
kitty.speak();
Kitten.find(function(err, kittens){
if(err){
throw err;
}
console.log(kittens);
recursiveAsyncReadLine();
});
});
});
}
我尝试用 promise 更改上面的代码。
function recursiveAsyncReadLine(){
rl.question("name: ")
.then((answer)=>{
if(answer==="exit"){
rl.close();
}
var kitty = new Kitten({name : answer});
return kitty.save();
})
.then((kitty)=>{
kitty.speak();
return Kitten.find();
})
.then((kittens)=>{
console.log(kittens);
recursiveAsyncReadLine();
})
.catch((err)=>{
throw err;
});
}
但它不适用于消息
TypeError: 无法读取未定义的属性 'then'
错误发生在第一个“then”语句中。
我不确定我是否正确理解了 Promise。我哪里做错了?
【问题讨论】:
-
question()返回什么? -
question是如何定义的? -
question() 来自 readline.createInterface。抱歉错过了!
-
rl.question是一个内置的节点方法,但它不返回Promise。不能使用then链接。这是一个相关的问题stackoverflow.com/questions/42080551/… -
Promise 链是否至少需要一个 Promise 对象?
标签: javascript