簡體   English   中英

async.waterfall無法正常工作

[英]async.waterfall not working as expected

我第一次使用async.waterfall ,遇到了一些麻煩。

這是我要調用的兩個函數:

function generateImageURL(data, callback){
   // ... xhr stuff
    xhr.onload = function () {
        callback(data, JSON.parse(xhr.responseText).data.link);
    }
  // ... more xhr stuff
    xhr.send(fd);
}

function generateCoordinates(data, url, callback){
    console.log("CALLED"); // never gets called
    navigator.geolocation.getCurrentPosition(function(p){
        data.image_url = url;
        data.coordinates = [p.coordinates.longitude, p.coordinates.latitude];
        callback(data);
    });
}

我的瀑布函數如下所示:

 async.waterfall([
        generateImageURL.bind(this, data),
        generateCoordinates
    ], function(err, result){

    });

我想將data從外部范圍傳遞到generateImageURL ,然后將該數據與url傳遞給generateCoordinates generateCoordinatescallback應調用匿名函數。

我的問題是generateCoordinates從未被調用。 即使我在generateImageURL調用它。

文檔

每個函數都傳遞了一個回調(err,result1,result2等),該回調必須在完成時調用。 第一個參數是錯誤(可以為null),任何其他參數將作為參數傳遞給下一個任務。

如果有任何任務將錯誤傳遞給自己的回調,則不會執行下一個函數。

您的回調是callback(data, JSON.parse(xhr.responseText).data.link); ,您將data作為err參數傳遞,因此將其解釋為錯誤,並且不會調用您的下一個函數。 如果在最終回調中使用console.log(err) ,則應該看到它。

將您的回調稱為callback(null, data, JSON.parse(xhr.responseText).data.link);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM