我想使用带参数的promise,比如下面的psudo代码:
let lookForXPromise = new Promise(arg1. arg2, function(resolve, reject){
asyncFunc(arg1, arg2, function(value){
if(value != "undefined"){
resolve(value);
}
else{
reject(); // didn't find X
}
});
});
lookForXPromise(1, "foo").then(
function(val){ ... do something...
}).catch(){ ...
但似乎承诺只接收function(resolve, reject)
,那么如何声明一个承诺并使用不同的参数重用它?
编辑:这样就可以迭代一组值,每次都会向promise发送不同的值。
答案 0 :(得分:2)
承诺是不是一个功能;它是函数的“承诺的未来回报值”。因此,您只需编写一个接受这些参数并创建新承诺的函数:
function lookForXPromise(arg1, arg2) {
return new Promise(function(resolve, reject){
asyncFunc(arg1, arg2, function(value){
if(value != "undefined"){
resolve(value);
}
else{
reject(); // didn't find X
}
});
});
}
// now you can call lookForXPromise as a function:
lookForXPromise(1, "foo")
.then(() => { /* ... */ })
.catch(() => { /* ... */ });