Promise.join()中的条件

时间:2015-08-15 08:37:46

标签: javascript ecmascript-6 bluebird es6-promise

我很难让蓝鸟Promise正确流动,假设所有查询都返回Promise,这是处理以下逻辑的最佳方式:

Promise.join(query1(), query2(), (result1, result2) => {
 if (result1 === "Something") {
   query3()
 } else {
    // do nothing
 }
})

如何继续处理join方法的返回值?

1 个答案:

答案 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;
        }
    };