将使用(arg1,arg2,success,error)的调用转换为Promise

时间:2017-11-06 14:20:57

标签: javascript promise

我正在使用第三方库来公开表单函数的函数(arg1,arg2,successFunction,errorFunction)。

为了防止我的代码深层嵌套成功函数,我想使用Promise.all

这可能吗?如果是这样,怎么样?

3 个答案:

答案 0 :(得分:1)

您可以为第三个库创建一个Promise包装器:

function Promise_wrapper(arg1, arg2){
    return new Promise(function (resolve, reject){
        yourLib(arg1, arg2, function(result){
            resolve(result)
        }, function(error){
            reject(error)
        })
  });
}

现在,您可以使用Promise.all()

数组调用Promise_wrapper

答案 1 :(得分:0)

您可以使用以下承诺:

function yourMethodReturningPromise(arg1, arg2) {
  return new Promise((resolve, reject) => {
    yourFunctionUsingCallback(arg1, arg2, (something) => resolve(something), () => reject("errors")).  
  });
}

您可以像下面一样使用yourMethodReturningPromise:

yourMethodReturningPromise(arg1, arg2).then((res) => {
    console.log("success: ", res);
}, (err) => console.log("errors"))

答案 2 :(得分:0)

这很简单:Use the Promise constructor只是将resolve作为successFunction回调传递,将reject作为errorFunction回调传递:

var promise = new Promise((resolve, reject) => {
    libraryFunction(arg1, arg2, resolve, reject);
});

您可能希望将此包装在仅使用arg1arg2作为参数的辅助函数中并返回承诺。