问题描述
我有下面的代码,但我不理解双箭头符号,如果第一个箭头的响应为true,第二个箭头功能是否可以工作?什么时候使用此符号?
async check({ commit }) {
await axios.get('check')
.then((response) => {
console.log("try");
},(response) => {
console.log("try2");
}
return true;
});
解决方法
这与箭头功能无关。它与承诺上的then
方法有关。
使用promise的then
方法,第一个参数是实现处理程序,第二个参数是拒绝处理程序。如果兑现了承诺,则第一个将以实现值进行调用。如果承诺被拒绝,则第二个带有拒绝原因的调用。只会调用一个(另一个)(如果有一个),而不会同时调用两个(出于相同的承诺)。
下面是在qusetion中部分显示的功能的略作编辑的版本,其中一些名称已更改,return true;
已删除(因为我不知道它的含义):
async check({ commit }) {
await axios.get('check')
.then(
(value) => { // ***
// Use the fulfillment value // *** fulfillment handler
},// ***
(reason) => { // ***
// Deal with the rejection // *** rejection handler
} // ***
);
});
请参阅MDN或JavaScript的承诺所基于的Promises A+ specification。
可能值得注意的是,没有特殊的理由将此特定功能设为async
函数,除非目标是专门隐藏承诺(或拒绝处理程序)可能实现的任何履行价值可以供应)。但是,这样做是为了达到目的。
Promises/A+ standard说then
可以接受两个参数:
promise.then(onFulfilled,onRejected)
第二个是onRejected
处理程序。
由于catch()
存在,因此您很少看到这种情况,但这仍然是标准的一部分。