Javascript angularjs中promise的.then和deferObj.resolve()之间的关系

Javascript angularjs中promise的.then和deferObj.resolve()之间的关系,javascript,angularjs,angular-promise,Javascript,Angularjs,Angular Promise,我发现很难理解angularjs中关于承诺的几个概念。我知道它是什么,什么时候使用它,$q.defer创建了一个promise对象,它有像resolve(),reject()这样的方法。我知道有一些功能,但我不知道什么时候使用它。然后函数在某些情况下我们使用它,在某些情况下我们不使用它 我通过了许多类似上面的链接,但仍然没有得到,也许我理解它都错了。但任何人请解释什么时候将.resolve方法放入.then函数,或者如果我的理解完全错误,请在否决表决前纠正我,因为在将问题发布到这里之前,我确实

我发现很难理解angularjs中关于承诺的几个概念。我知道它是什么,什么时候使用它,$q.defer创建了一个promise对象,它有像resolve(),reject()这样的方法。我知道有一些功能,但我不知道什么时候使用它。然后函数在某些情况下我们使用它,在某些情况下我们不使用它


我通过了许多类似上面的链接,但仍然没有得到,也许我理解它都错了。但任何人请解释什么时候将.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