Javascript 如何将论点传递给承诺?
在我看到的示例中,promise中的代码是静态的。例如: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
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,是的,我同意。