用参数重用承诺

时间:2017-02-22 11:55:29

标签: javascript asynchronous promise

我想使用带参数的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发送不同的值。

1 个答案:

答案 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(() => { /* ... */ });