最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

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

运维笔记admin11浏览0评论

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

无法读取未定义节点的属性'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);
}) 

[帮助我了解我的错误。

回答如下:

最简单的代码修复方法是

  1. 修复第一行的语法
  2. 在该函数中返回某些信息,在这种情况下为Promise
  3. somePackagePromiseFunc是功能吗?然后叫它
  4. 将返回值固定在.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”,因为它也不是构造函数

发布评论

评论列表(0)

  1. 暂无评论