pha*_*ani 10 jquery promise jquery-deferred angularjs angular-promise
我想将我的模块/ sdk中的promises返回到非角度javascript.例如,如果我返回jquery的承诺,我应该可能发送jquery延迟对象.如何将Angular承诺转换为jquery promise/deferred obj.
任何建议都非常感谢.
Ben*_*aum 21
免责声明:jQuery承诺与其他库不相称 - 完全没有.jQuery不会自己同化其他第三方承诺.另一方面,角度$ q承诺 - 将,所以无论何时你有选择,将jQuery承诺同化为Angular承诺,而不是相反.(所有这些都在jQuery 3.0中发生了变化,如果您看到此免责声明并且3.0已经发布 - 请发表评论).
将jQuery承诺转换为Angular承诺:
var angularPromise = $q.when(jQueryPromise); // eg: $q.when($.get(...));
Run Code Online (Sandbox Code Playgroud)
将jQuery承诺转换为本机或Bluebird承诺:
var promise = Promise.resolve(jQueryPromise); // eg: Promise.resolve($.get(..));
Run Code Online (Sandbox Code Playgroud)
转换Promise/A +投诉承诺,例如$ q Angular promise或Bluebird承诺或本机承诺到jQuery承诺:
function convert(p){
var d = $.Deferred();
p.then(function(val){
d.resolve(val);
}, function(err){
d.reject(err);
});
return d.promise();
}
var jqPromise = convert($http.get(...)); // example usage
// you might be tempted to think you can easily do:
var jqPromise = $.when($http.get(...));
// however - this will will fail inconsistently due to differences between
// jQuery and Angular promises
Run Code Online (Sandbox Code Playgroud)
另外值得注意的是 - Angular承诺可以使用jQuery承诺:
$http.get(...).then(function(id){
return $.get("http://..."+id); // will work, though pointless because $http.get
}).then(function(result){
// contains result of $.get call here
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3547 次 |
| 最近记录: |