Tre*_*vor 2 javascript promise
我对此感到困惑,因为到目前为止我找到的每个教程都假定我可以编辑库代码,或者库只有回调或回调作为最后一个参数.
我正在使用的库具有各种功能设置
function(successCallBack(result), FailCallBack(error),options)
所以在每个实例中,我最终都使用了像
var options={stuff1:1, stuff2:2};
doStuff(success,failure,options);
function success(result){
//handle, usually with another call to a similar function, chaining callbacks together
};
function failure(error){
//handle error
};
Run Code Online (Sandbox Code Playgroud)
当我只能控制呼叫,成功和失败时,如何将这些转换为承诺?
此外,作为奖励,链条正在访问它们之外的变量.
var options={stuff1:1, stuff2:2};
doStuff(success,failure,options);
function success(result){
var options2={stuff1:1, stuff2:2};
doStuff2(function(result2){
processStuff(result1, result2);
},function(error){
//handle error
},options2)
};
function failure(error){
//handle error
};
function processSuff(result1,result2){
//do things to results
}
Run Code Online (Sandbox Code Playgroud)
谢谢
您可以使用以下功能.它接受promisify和options的函数,并返回promise:
let promisify = (fn, opts) => {
return new Promise((resolve, reject) => {
fn(resolve, reject, opts);
});
}
Run Code Online (Sandbox Code Playgroud)
它可以使用如下:
promisify(doStuff, options)
.then(data => console.log('Success call', data))
.catch(err => console.log('Error', err));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |