Promise.resolve() 没有被执行

找工作

我正在尝试将一个全新的对象保存到我的数据库中,但前提是它还不存在。为此,我在 other 中创建了这个方法来进行两个验证:(1) 如果对象丢失和 (2) 如果对象已经存在。如果一切正常,则保存。代码如下:

exports.new = (obj) => {
  return Promise.resolve(() => {
    if (!obj) throw Error('object is missing');

    this.getOneAsync(obj).then(repeatedObj => {
      if (repeatedObj.length != 0) throw Error('Object already saved!');
      return obj;
    });
  }).then(obj => {
    var newObj = createModel(obj);

    return newObj.saveAsync();
  })
};

不幸的是,Promise.resolve()没有被执行。我的代码直接跳转到then()子句,obj不是我所期望的,总是返回{ length: 0, name: '' }.

我究竟做错了什么?任何帮助将不胜感激。

菲利克斯·克林

Promise.resolve() 执行,但不是你传递给它的函数。Promise.resolve立即使用您传递给它的值解决承诺。它不调用该函数。.then使用您传递给的函数调用Promise.resolve

Promise.resolve在你的情况下没有用。而是做类似的事情

exports.new = (obj) => {
  if (!obj) return Promise.reject(new Error('object is missing'));

  return this.getOneAsync(obj)
    .then(repeatedObj => {
      if (repeatedObj.length != 0) throw Error('Object already saved!');
      var newObj = createModel(obj);
      return newObj.saveAsync();
    });
};

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章