2014-03-03 2 views

답변

2

그냥 함수에 매개 변수로 콜백을 소개 사용 후 직접

function getItem(key, callback) { 
    var item; 
    func(key, function(items) { 
    for (var key2 in items) { 
     if (key2 === key && items.hasOwnProperty(key2)) { 
     item = items[key2]; 
     } 
    } 

    callback(item); 
    }); 
} 

그것을 반환하는 대신 값을 반환하고 콜백의 개념을 다시 사용할 수 있습니다 :

function getItem(key, callback) { 
    func(key, function(items) { 
    for (var key2 in items) { 
     if (key2 === key && items.hasOwnProperty(key2)) { 
     callback(items[key2]); 
     } 
    } 
    }); 
} 

getItem('bob', function (key) { 
    console.log(key); 
}); 
+0

올바른 +1 방법으로이 사건을 처리하십시오. – Praveen

+0

다음과 같이 조건을 정확히 만족해야합니다. if (getItem ('bob') && getItem ('count') === 4) {...} – user3374552

+0

이 방법을 사용할 수 있다고 생각하지 않습니다. 아마도 2 가지 지연된 객체를 사용해야 할 것입니다. 충분한 양질의 모듈이 도움이 될 것입니다. – Andy

1

수 없습니다. 그게 다야. 자바 스크립트는 비동기 콜백을 기다릴 방법이 없기 때문입니다.

당신이 getItem('key', function(item) { ... })

+2

비동기임을 어떻게 알 수 있습니까? OP의 게시물에는 그런 종류의 것이 없습니다. –

+1

동기화 된 경우 운영 코드가 작동해야합니다. –

+0

동기 적이라는 보장이 없으므로 정의에 따라 비동기입니다 (실제로는 그렇지 않더라도) – SergeS

관련 문제