为了便于解释'然后'的重要性,有谁能告诉我这段代码中发生了什么?
# /patients/patient/pk/delete
url(r'patient/(?P<pk>[0-9]+)/delete/$', views.patientDelete.as_view(), name='patient-delete'),
答案 0 :(得分:3)
fetchComments
会返回承诺(可能;它可能只是“可以”*)。承诺是稍后将被解决或拒绝的事情(通常为**)。 then
用于挂接将在解析promise时调用的处理程序(如果将第二个函数传递给then
,则可选择将其拒绝;否则,您将使用catch
})。
在这种情况下,该代码表示当/ fetchComments
返回的承诺解析时,使用该分辨率的comments
属性使用React组件的set the state分辨率值值。
有关this MDN article和the Promises/A+ spec中的承诺的更多信息。
*参见Promises / A +规范,了解“可能”是什么。
**如果您对已经已经解决或拒绝的承诺使用then
,那么您可以通过JavaScript中的本机承诺保证您的处理程序仍将被异步调用。对于一些早期的类似承诺的实现来说情况并非总是如此,它们要么异步调用回调(如果承诺尚未解决),要么同步调用(如果是),这是......混乱且无益的。 JavaScript的本机承诺和任何非常好的承诺库都保证了一致的回调行为。
答案 1 :(得分:2)
我稍后回答这个问题,但有时可能会对某人有所帮助。
让我们开始吧:
从上面粘贴的代码中,我可以给您一个提示,只要您在任何Javascript代码段中看到关键字 then ,即使用promise的异步函数。
承诺:除了存储有关这些事件是否发生以及是否发生的信息的对象外,通常,promise将处理成功(在js代码中解决)和失败(在js中拒绝)代码),也两者兼有。因此,当我们创建任何异步函数时,都会在这些异步函数中创建promise。
Promise.then : then 允许我们将事件处理程序分配给promise。根据我们提供的参数,我们可以处理成功,失败或两者兼而有之,并且返回then也是一个承诺,这意味着它可以处理更多事件。
最后转到上面的代码,fetchComments是一个约定,它是一个异步函数,当响应为 resolve 时,我们将更新注释的状态,此外,在这里我们还可以处理使用 .catch 或什至添加另一个 then 并结束的错误情况,下面的链接有一个很好的解释:
答案 2 :(得分:0)
函数fetchComments将获取数据并返回一个Promise 然后给他们状态注释:)。但我认为你应该阅读hier ^^。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise