jca*_*314 4 angularjs angular-promise
此示例尝试使同步代码异步.我发现的所有例子都是相反的,除了docs.angularjs.org .. $ q下面的主要第一个例子.
该文档列出了我试图使用的$ q构造函数.不幸的是,jsfiddle Angular库1.1.1和1.2.1提供了一个$ q对象(不是函数),如本例所示.相反,我将提供我的例子,并希望有人会看到这个错误.
https://docs.angularjs.org/api/ng/service/ $ q
我需要看到"这不会发生!" 要执行的行.
f = function(name) {
return $q(function(resolve, reject) {
console.log "this does not happen!"
resolve('great')
});
}
f(name).then(function(result) {
console.log 'result', result
}, function(error) {
console.log 'error', error
});
Run Code Online (Sandbox Code Playgroud)
而不是记录"这不会发生!" 接着是"伟大的",我实际上看到传递给$ q的函数记录::
result function(resolve, reject) {
console.log "this does not happen!"
resolve('great')
}
Run Code Online (Sandbox Code Playgroud)
谁能看到我做错了什么?
有点难以确切地看到你正在尝试的东西,但这里有一些我们使用的代码可能有所帮助.
f = function(someValue){
var deferred = $q.defer();
doSomethingAsync(someValue, function(result){ return deferred.resolve(result)});
return deferred.promise;
}
f("foo").then(function() {alert("I was called after the async thing happened")})
Run Code Online (Sandbox Code Playgroud)
你什么都没做错。我真的不认为角度文档显示该代码并在其上方隐藏该行是不合适的:
虽然支持构造函数样式的使用,但并非ES6 Harmony promises的所有支持方法都可用。
如您所见,它引起了很多混乱。
使用构造方法(如Zipper发布)
var dfd = $q.defer();
Run Code Online (Sandbox Code Playgroud)
然后您可以执行以下操作:
dfd.reject('some value');
dfd.resolve('some value');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2885 次 |
| 最近记录: |