Javascript angularjs中promise的.then和deferObj.resolve()之间的关系
我发现很难理解angularjs中关于承诺的几个概念。我知道它是什么,什么时候使用它,$q.defer创建了一个promise对象,它有像resolve(),reject()这样的方法。我知道有一些功能,但我不知道什么时候使用它。然后函数在某些情况下我们使用它,在某些情况下我们不使用它Javascript angularjs中promise的.then和deferObj.resolve()之间的关系,javascript,angularjs,angular-promise,Javascript,Angularjs,Angular Promise,我发现很难理解angularjs中关于承诺的几个概念。我知道它是什么,什么时候使用它,$q.defer创建了一个promise对象,它有像resolve(),reject()这样的方法。我知道有一些功能,但我不知道什么时候使用它。然后函数在某些情况下我们使用它,在某些情况下我们不使用它 我通过了许多类似上面的链接,但仍然没有得到,也许我理解它都错了。但任何人请解释什么时候将.resolve方法放入.then函数,或者如果我的理解完全错误,请在否决表决前纠正我,因为在将问题发布到这里之前,我确实
我通过了许多类似上面的链接,但仍然没有得到,也许我理解它都错了。但任何人请解释什么时候将.resolve方法放入.then函数,或者如果我的理解完全错误,请在否决表决前纠正我,因为在将问题发布到这里之前,我确实尝试自己理解它 承诺是可以传递或返回的对象,它包含异步行为结果的引用。在角度上,它们是通过
$q.defer()
创建一个具有特殊方法的对象,其中包括resolve()
和reject()
。resolve()。如果出现问题,应调用reject()
方法,发送错误对象或错误消息
这个函数应该有一个调用者,这个调用者应该捕获对promise对象的引用
这里可以调用then()
方法来获得结果或根据情况处理错误。请注意,then()
方法有两个参数,它们是成功或出错时将执行的函数
在中,您可以看到代码的一部分具有名为getData
的异步函数的定义,随后调用then()
以获取结果,此调用由异步函数getData
的调用方进行
在ControllerFatherCtrl中,调用then()
以处理服务的响应SonService。在SonService中也有对then()
方法的调用,这可能会令人困惑,但这是为了获得HTTP GET调用的结果,正如注释正确解释的那样:
// the $http API is based on the deferred/promise APIs exposed by the $q service
// so it returns a promise for us by default
在本例中,您只看到then()
部分,因为$http
服务的get()
方法是一个异步函数,它在完成时相应地进行resolve()
或reject()
方法调用
从:
$http服务是一个函数,它接受单个参数(配置对象),用于生成http请求并返回承诺
再说一次,什么是承诺?检查这个答案的开头。$http
服务的方法代码已经编写完成。当调用这些方法中的任何一个并完成时,它们调用resolve()
或reject()
。开发人员必须编写相应的代码才能读取此结果。(是的,这就是我们在评论中提到的then()
)。承诺是一个可以传递或返回的对象,它引用异步行为的结果。在角度上,它们是通过
$q.defer()
创建一个具有特殊方法的对象,其中包括resolve()
和reject()
。resolve()。如果出现问题,应调用reject()
方法,发送错误对象或错误消息
这个函数应该有一个调用者,这个调用者应该捕获对promise对象的引用
这里可以调用then()
方法来获得结果或根据情况处理错误。请注意,then()
方法有两个参数,它们是成功或出错时将执行的函数
在中,您可以看到代码的一部分具有名为getData
的异步函数的定义,随后调用then()
以获取结果,此调用由异步函数getData
的调用方进行
在ControllerFatherCtrl中,调用then()
以处理服务的响应SonService。在SonService中也有对then()
方法的调用,这可能会令人困惑,但这是为了获得HTTP GET调用的结果,正如注释正确解释的那样:
// the $http API is based on the deferred/promise APIs exposed by the $q service
// so it returns a promise for us by default
在本例中,您只看到then()
部分,因为$http
服务的get()
方法是一个异步函数,它在完成时相应地进行resolve()
或reject()
方法调用
从:
$http服务是一个函数,它接受单个参数(配置对象),用于生成http请求并返回承诺
再说一次,什么是承诺?检查这个答案的开头。$http
服务的方法代码已经编写完成。当调用这些方法中的任何一个并完成时,它们调用resolve()
或reject()
。开发人员必须编写相应的代码才能读取此结果。(是的,这就是我们在评论中提到的then()
)
请解释何时将.resolve方法放入.then函数
如果您参考中的示例,那么这只是一个反模式,不应使用
请解释何时将.resolve方法放入.fu