我不知道为什么我的promise.resolve
返回未定义。
我的代码结构是这样的:
const request = require('request-promise')
var lotteryid = function(){
const option = {/* info about the request url */}
request(option)
.then(function(body){
// do something
// get some value from the body. let's call it x
return promise.resolve(x)
})
.catch(function(err){
// got any error
return promise.reject(err)
})
}
这样做之后,我调用了这个函数:
lotteryid.then(function(x){
**x is undefined in my case**
}).catch(function(err){
return promise.reject(err)
})
任何人都可以帮助我吗?感谢
答案 0 :(得分:0)
第一个错误:不是promise.resove
而是Promise.resolve
。
第二个问题:你在非异步函数内等待,然后返回一个已解决的promise。
编辑:更好的解决方案(感谢@Mikael Lennholm)
const request = require('request-promise')
var lotteryid = function() {
return request(option)
.then(function(body) {
// do something
// get some value from the body. let's call it x
return x
})
}
和以前一样:
lotteryid.then(function(x) {
// do_something(x)
})
.catch(function(err) {
// console.error(err)
})
OLD ANSWER:
你可以:
返回一个新的承诺,并在您在身体上做了一些事情后解决它
const request = require('request-promise')
var lotteryid = function() {
return new Promise((resolve, reject) => {
request(option)
.then(function(body) {
// do something
// get some value from the body. let's call it x
resolve(x)
})
.catch(function(err){
// got any error
reject(err)
})
})
}
使函数异步并返回值,如
const request = require('request-promise')
var lotteryid = async function() {
request(option)
.then(function(body) {
// do something
// get some value from the body. let's call it x
return x
})
}
感谢Derek的建议。