如何在Node.js的回调中写承诺的承诺?

时间:2020-10-01 05:15:44

标签: javascript node.js promise

如何在promise的rejectCallback函数中编写catch语句?

可以还是应该这样写?在这种情况下,Promise的对象将需要在拒绝函数中传递。这样做的方式是什么?

如果没有,那么如果必须分别编写.catch语句,那么rejectCallback的最佳用途是什么?

function fileFunction() {
  console.log("In fileFunction:")
  // open file
  let objPromise = new Promise((resolve, reject) => {
    objFs.open('nehw.js',
      'r',
      (argError, argFD) => {
        if (argError) {
          reject(new Error("File not found!"), 1000);
        } else {
          resolve("File found!", 1000);
        }
      }
    )
  });

  objPromise.catch((argError) => {
    console.error(argError)
  })

  objPromise.then(promiseResolveCallback, promiseRejectionCallback)
}


function promiseResolveCallback( arg )
{
    console.log("promiseResolveCallback(): ", arg)
}

function promiseRejectionCallback( arg )
{
    
    console.log("promiseRejectionCallback(): ", arg)
}

1 个答案:

答案 0 :(得分:1)

我认为两者都可行,但不确定执行顺序。为了简化,只需使用一种方法-

两个

initialization

objPromise.then(promiseResolveCallback, promiseRejectionCallback)

注意:请确保在您的方法中返回结果,使其表现得像上面的resolve,拒绝方法一样。

if (argError) {
  reject(new Error("File not found!"), 1000);
} else {
  resolve("File found!", 1000);
}

另外,为了防止破坏代码,请将函数放在您的诺言之前,以便它们在调用它们之前就存在。

请参阅参考资料: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/then

function promiseResolveCallback( arg ) {
return arg; 
}