2017-02-01 1 views
0

in React-Native 동시에 가져 오기를 시도하는 IP가 있습니다. 특정 상태 코드로 대답하는 첫 번째 것은 내가 찾고있는 것입니다. 이 부분은 앱을 시작할 때 발생하므로 최대한 빨리해야합니다. async 라이브러리를 사용하여, 내 코드는 다음과 같다 : 그러나React-native 첫번째 성공적으로 가져 오기를 감지했습니다.

// Here an array with a bunch of IPs 
// ... 

async.detect(uris, function(uri, callback) { 
    // Fetching a specific URL associated with the IP 
    fetch(`http://${uri}/productionservice/DataService.svc/`) 
    .then((response) => { 

    // If the URL answers with a 401 status code I know it's the one I'm looking for 
    if(response.status == '401') { 
    callback(null, true); 
    // Otherwise It's not 
    } else { 
    callback(null, false) 
    } 
    }) 
    .catch((error) => { 
    callback(null, false) 
    }); 
}, function(err, result) { 

    if(typeof(result)=='undefined') { 
     console.log('No result found'); 
    } 
    console.log(result); 
}); 
} 

, 테스트 중 하나가 성공하면, 나는 결과를 얻을 할, 그러나 아무도 성공하지 때 detect 방법은 결코 나에게 있음을 알려하지 무기한 중단 없음 의 IP가 내가 예상 한 답을 되돌리고있다.

내 질문은 : async.detect를 사용하고 RN의 fetch, 나는 여러 개의 링크를 가져올 수있는 방법, 그들 중 누구도 성공하지 않는 경우, 내 테스트가 성공하면 결과를 얻을, 또는 false 문.

감사합니다. 비동기 사용

답변

1

는이 라인을 따라 뭔가를 할 수 기다리고 :

async function detect(uris) { 
    const promises = []; 
    uris.forEach((uri) => promises.push(fetch(`http://${uri}/productionservice/DataService.svc/`))); 
    const responses = await Promise.all(promises); 
    for (let i = 0; i < responses.length; i++) { 
    if (responses[i] && responses[i].status === '401') { 
     return true; 
    } 
    } 
    return false; 
} 
+0

그것은 [내가]'따라서 기능을 포위 하듯이 'FALSE'를 반환의 IP가 아닌 응답을 반환하는'반응을 보인다. '처리되지 않은 약속 거부 '경고를 처리하는 방법은 무엇입니까? 계속 튀어 나오고있어. – Unforgiven

+0

try로 감싸고 catch를 무시하십시오. – yedidyak

+0

하지만이 경우 상태 코드는 어떻게됩니까? – Unforgiven

관련 문제