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));
但是如果不更清楚地了解您要实现的目标,很难说这是否是一个好的解决方案。
我正在编写一个使用大量承诺的节点应用程序。为了保持代码的可读性,我删除了尽可能多的匿名函数并将它们存储在一个 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));
但是如果不更清楚地了解您要实现的目标,很难说这是否是一个好的解决方案。