我很难让蓝鸟Promise正确流动,假设所有查询都返回Promise,这是处理以下逻辑的最佳方式:
Promise.join(query1(), query2(), (result1, result2) => {
if (result1 === "Something") {
query3()
} else {
// do nothing
}
})
如何继续处理join方法的返回值?
答案 0 :(得分:0)
要继续流程,您需要从处理程序返回一些内容。在您的情况下,您需要返回Promise.join(query1(), query2(), (result1, result2) => {
if (result1 === "Something") {
return query3();
}
});
返回的值,如此
query3()
现在join
返回了一个Promise,您可以将一个then处理程序附加到query3
的结果,并通过Promise.join(query1(), query2(), (result1, result2) => {
if (result1 === "Something") {
return query3();
}
})
.then((value_resolved_from_query3) => {
// do something with value_resolved_from_query3
});
获取值,就像这样
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
if (head == NULL) return NULL;
for (ListNode* prev = head, *cur = head->next; cur; cur = cur->next)
{
if (prev->val == cur->val)
{
prev->next = cur ->next;
delete cur;
}
else
{
prev = cur;
}
}
return head;
}
};