无法读取未定义节点的属性'then'

时间:2019-10-07 04:19:28

标签: javascript node.js

请原谅我问这样一个初学者级别的问题,因为我对标题相同的问题不满意。基本上,在执行一些也会返回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);
}) 

帮助我理解我的错误。

1 个答案:

答案 0 :(得分:4)

最简单的代码修补程序是

  1. 修正第一行中的语法
  2. 在该函数中返回某些内容(在这种情况下为Promise)
  3. submitButtonTapped是一个函数吗?然后叫它
  4. 将返回值固定在.then / .catch

您最终会得到

ViewController

注意一些代码:

somePackagePromiseFunc

Promise.resolve不是构造函数,因此将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);

但是,您位于.then内,返回的Promise都会解析.then中返回的值-因此,根本不需要将其包装在Promise.resolve中-因此,这就是为什么您只需要< / p>

new

与.catch类似,除了返回拒绝的承诺外,您return Promise.resolve(data); 代替return data; -尽管从技术上讲您可以

throw

注意,没有“新”内容,因为它也不是构造函数