2015-03-18 53 views
0

解析運行後端作業的Javascript SDK問題。Parse.Promise.as()沒有返回Promise

我有一個函數根據條件返回不同的承諾。在這兩個條件均不滿足的情況下,我想返回一個「虛擬」的承諾,並不做任何事情:

function myFunction() { 

    if (condition1) 
    return somePromise(); 

    else if (condition2) 
    return someOtherPromise(); 

    else 
    return ??? 
} 

我試圖返回Parse.Promise.as(),但失敗時,沒有一個條件滿足:

E2015-03-18T21:31:50.410Z] v41: Ran job checkup with: 
Input: {} 
Failed with: TypeError: Object false has no method 'then' 
    at jobs/checkup.js:18:73 
    at null.<anonymous> (Parse.js:3:19012) 
    at e (Parse.js:2:6670) 
    at Parse.js:2:7423 
    at g (Parse.js:2:7160) 
    at c.extend.then (Parse.js:2:7408) 
    at Parse.js:3:18989 
    at Array.forEach (native) 
    at Function.x.each.x.forEach (Parse.js:1:661) 
    at Parse.js:3:18966 

編輯:這裏是被調用的函數:

function checkup() { 

    return Parse.Cloud.job("checkup", function(request, status) { 
    var query = new Parse.Query(Parse.User); 
    query.equalTo("active", true); 
    query.each(function(user) { 
     return myFunction().then(function() { 
     return user.save(); 
     }); 

    }).then(function() { 
     status.success('success'); 
    }); 
    }); 
} 
+1

錯誤意味着myFunction返回false,並且調用者正試圖調用then()。有可能您的somePromise()或someOtherPromise()函數實際上返回false而不是promise?這似乎是如此。 Parse.Promise.as()。然後()應該工作得很好。 – danh 2015-03-18 22:03:04

+0

你可以發佈該異常的堆棧跟蹤嗎? – Bergi 2015-03-18 22:05:26

+0

'返回Parse.Promise.as(dummmyresult);'應該是要走的路。 – Bergi 2015-03-18 22:07:08

回答

1

返回Parse.Promise.as()是正確的道路,因爲這是一個解決的承諾。

錯誤很明顯說明您的承諾之一是返回false的布爾值。追蹤並解決您的問題。