Javascript 如何将论点传递给承诺?

Javascript 如何将论点传递给承诺?,javascript,promise,Javascript,Promise,在我看到的示例中,promise中的代码是静态的。例如: var promise = new Promise(function (resolve,reject) { if (true) resolve("It is a success!") else reject(("It is a failure.")); }); promise.then(function (x) { alert(x); }).catch(function (err) { aler

在我看到的示例中,promise中的代码是静态的。例如:

var promise = new Promise(function (resolve,reject) {
  if (true)
    resolve("It is a success!")
  else
    reject(("It is a failure."));
});

promise.then(function (x) {
   alert(x);
}).catch(function (err) {
      alert("Error: " + err);
    });

我如何向承诺传递论据,以便完成有用的工作?它是通过使用全局变量实现的吗?

通常可以使用以下代码实现:

function getSomePromise(myVar) {
  var promise = new Promise(function (resolve,reject) {
    if (myVar)
      resolve("It is a success!")
    else
      reject(("It is a failure."));
  });
  return promise;
}

var variableToPass = true;
getSomePromise(variableToPass).then(function (x) {
  alert(x);
}).catch(function (err) {
  alert("Error: " + err);
});
更新:

正如@AlonEitan所建议的,您可以简化
getSomePromise
函数:

function getSomePromise(myVar) {
  return new Promise(function (resolve,reject) {
    if (myVar)
      resolve("It is a success!")
    else
      reject(("It is a failure."));
  });
}

现在,
alert(x)
将发出警报(“这是一个成功!”),您可以将该字符串更改为您想要的任何字符串。您可以将对象传递给
resolve
回调:
resolve({status:'success',message:'It is success!”})
(例如),在resolve回调中,您可以像
alert(x.message)一样访问它或<代码>警报(x状态)不是全局变量,但通常在创建承诺时只使用范围内的任何变量。与往常一样,将要创建的值放在函数中,并让它取决于参数?!您的问题与“如何将参数传递给字符串”或“如何将参数传递给对象文本”相同。您认为什么是“有用的工作”?您可以只写代码>返回新的承诺(函数(解析,拒绝){< /Calp> > AlalTITAN,是的,我同意。