2017-01-16 55 views
0

我正在調用一個函數來執行Stripe API請求,但是當我返回一個bool時,什麼都不會發生。該函數被調用,但是if語句內部沒有被調用,而是else語句被調用。返回聲明不適用於條紋

if(performStripeAction() == true) { 
    console.log("action performed"); //does not get printed 
} else { 
    console.log("error transferring"); //prints error transferring 
} 

function performStripeAction() { 
var psaret; 
    console.log("about to start transfer"); 
    stripe.transfers.create(
    { 
     amount: 10000, 
     currency: 'usd', 
     destination: act_xxxxx 
    }, function(err, transfer){ 
     if(!err){ 
     console.log("no error"); //prints no error 
     psaret = true; 
     }else{ 
     console.log("error"); 
     psaret = false; 
     } 
     console.log("the bool is " + psaret); //prints true 
     return psaret; 
    }); 
} 

回答

0
stripe.transfers.create({ 
     amount: 10000, 
     currency: 'usd', 
     destination: act_xxxxx },{stripe_account: String(accountId)},  
     function(error, transfer) { 
     if (error) { 
      // Transfer failed 
     return console.log("error transferring"); //prints error transferring 
     } 

    // Transfer succeeded.You can then use "transfer" object to cal another function 
    console.log("action performed"); 
    }); 
+0

它看起來像整個整個函數需要return語句。 'function(error,transfer)'中的return語句爲該函數返回,而不是執行'performStripeAction()' – joethemow

0

只要有條紋API調用return a promise

performStripeAction() 
.then(function(ret) { 
    if (ret) 
     console.log('action performed'); 
    else 
     console.log('error transferring') 
}); 


function performStripeAction() { 
    var psaret; 
    console.log("about to start transfer"); 
    return stripe.transfers.create(
     { 
     amount: 10000, 
     currency: 'usd', 
     destination: act_xxxxx 
     } 
    ) 
    .then(function(transfer){ 
     console.log("no error"); //prints no error 
     psaret = true; 
     return psaret; 
    }) 
    .catch(function(err)){ 
     console.log("error"); 
     psaret = false; 
     return psaret; 
    }); 
} 
+0

操作或錯誤傳輸不打印,但沒有錯誤。 – joethemow

+0

你在調用performStripeAction()。then(function(ret){...})嗎? 我編輯了答案,以便你可以看到如何做到這一點。 –

+0

是的,我做到了 – joethemow