无法读取未定义节点的属性'then'
请原谅我问这样的初学者水平的问题,因为我对标题为相同问题的答案不满意。基本上,在执行一些也会返回promise的包函数之后,我需要为函数提供promise返回类型。
myquest.js
module.exports = somefunction = (data){
//performs some processing with data
somePackagePromiseFunc() //return type promise
.then((data) => {
console.log(data);
return new Promise.resolve(data);
}).catch( (err) => {
console.log(err);
return new Promise.reject(err);
});
}
mymain.js
var somefunction = require('myquest');
somefunction(data).then((data) => {
console.log('job done with data ' + data);
}).catch(() => {
console.log('we messed with error: ' + err);
})
[帮助我了解我的错误。
回答如下:最简单的代码修复方法是
- 修复第一行的语法
- 在该函数中返回某些信息,在这种情况下为Promise
somePackagePromiseFunc
是功能吗?然后叫它- 将返回值固定在.then / .catch中
您最终会得到
module.exports = function (data) {
//performs some processing with data
return somePackagePromiseFunc().then((data) => {
console.log(data);
return data;
}).catch( (err) => {
console.log(err);
throw err;
});
}
注意一些代码:
return new Promise.resolve(data);
Promise.resolve不是构造函数,因此删除new
将使其成为]
return Promise.resolve(data);
但是,您位于.then内,返回的任何内容都是Promise,它可以解析.then中返回的值-因此,根本不需要将其包装在Promise.resolve中-所以这就是为什么您只需要]]
return data;
与.catch类似,除了返回拒绝的承诺,您
throw
而不是return
-尽管从技术上讲您可以]return Promise.reject(err);
注意,没有“ new”,因为它也不是构造函数