JavaScript: 将新变量传递给默认方法

JavaScript: Pass new variable to default method

我正在编写一个使用大量承诺的节点应用程序。为了保持代码的可读性,我删除了尽可能多的匿名函数并将它们存储在一个 JavaScript 对象中,如下所示。

let myCallbacks = {
  myFirstCallback: function(fulfill, reject) {
    // Do some stuff
    if(noError)
      fulfill({field: 'data'});
    else
      reject('ERROR');
  },
  mySecondCallback: function(fulfill, reject) {
    // Do some stuff
    if(noError)
      fulfill({field: 'data'});
    else
      reject('ERROR');
  }
}

let myFirstMethod = function() {
  return new Promise(myCallbacks.myFirstCallback);
}

let mySecondMethod = function() {
  return new Promise(myCallbacks.mySecondCallback);
}

这很完美。

现在我有一个函数需要将数据传递给我的回调。想象一下下面的代码

let myCallbacks = {
  myFirstCallback: function(fulfill, reject) {
    // Do some stuff
    if(noError)
      fulfill({field: 'data'});
    else
      reject('ERROR');
  },
  mySecondCallback: function(fulfill, reject) {
    // Do some stuff
    if(noError)
      fulfill({field: 'data'});
    else
      reject('ERROR');
  },
  myThirdCallback: function(fulfill, reject, someVariable) {
    // Do some stuff
    if(someVariable*3>10)
      fulfill({field: 'data'});
    else
      reject('ERROR');
  }
}

let myFirstMethod = function() {
  return new Promise(myCallbacks.myFirstCallback);
}

let mySecondMethod = function() {
  return new Promise(myCallbacks.mySecondCallback);
}

let myThirdMethod = function(someVariable) {
  // Doesn't work
  return new Promise(myCallbacks.myThirdCallback);

  // Doesn't work
  return new Promise(myCallbacks.myThirdCallback(fulfill, reject, someVariable);

  // Doesn't work
  return new Promise(myCallbacks.myThirdCallback(someVariable));
}

将 someVariable 从 myThirdMethod 传递到 myCallbacks.myThirdCallback() 的正确方法是什么?

您可以执行以下操作:

var thatOtherCallback = function(variable)
{
   return function(fulfill, reject)
   {
     ... use variable and do whatever you need to do ...
   }
}

...

new Promise(thatOtherCallback(value));

但是如果不更清楚地了解您要实现的目标,很难说这是否是一个好的解决方案。