2013-02-22 3 views
0

다음 함수를 사용하여 params.name 집합없이 함수를 시작하는 경우가 종종 있습니다. 나는 비동기 함수에서 그렇게 강하지 못하다. 그래서 setName이 시작이 호출되기 전에 반드시 리턴 할 필요가 없기 때문에 이것이 가능한지 궁금하다. 그리고 나서 self.params의 초기화에서 3 진 내부에 함수 호출을 두는 것이 도움이 될까요?함수 매개 변수를 비동기식으로 설정하십시오.

projectLaunch: function(options) { 
    var self = this; 
    if (options.name === null || options.name === "undefined") { 
    var name = self.setName(); 
    } else { 
    var name = options.name; 
    }; 

    self.params = { 
    name: name 
    }; 
    launch(self.params); 
}, 

setName = function() { 
    return encodeBase64(User.name, Project.name) 
} 

이것은 모두 더 큰 개체의 일부이며 projectLaunch라는 함수는 외부 적으로 호출됩니다.

+0

편집 한 코드가 컴파일되지 않습니다. 우리가 당신의 문제를 찾을 수 있도록 최소한의 작업 예제를 만들 수 있습니까? –

+0

this :'options.name === null || options.name === "undefined"는 다음과 같아야합니다 :'options.name === null || options.name === undefined' 또는 단지 다음과 같습니다 :'options.name == null' (트리플'=='대신 double) –

+0

맞아요, 오타이기도합니다. 나는 실제로'options.name == null'으로 위증을 검사하고 있습니다. –

답변

1

여기에 비동기가 없습니다 (귀하의 encodeBase64 구현이 없지만 비동기 이유는 없습니다).

그러나 이것은 어떤 이름으로 기능을 할당하지 않으며 호출 않습니다

function(options) { 
... 
} 

은 그래서 launch 우리가 볼 수있는 코드에서 호출 할 수 없습니다. 당신이 IIFE를 확인하려면 당신이 options.name에서 비어 있지 않은 문자열을 기대하는 경우

(function(options) { 
... 
})({}); 

로 수정, 가장 간단한 해결책은 전달 된 값을 사용하거나 다른 하나는 이것이다 :

var name = options.name || self.setName(); 
+0

사실 ... 코드가 이상합니다. 더 복잡한 것에서 복사 한 것 같습니다 ... –

+0

이 코드는 선례의 코드에 대한 답변입니다. 내 대답을 편집하기 전에 고정 된 질문을 기다리고 있습니다. –

+0

글쎄, 기본적으로 내 질문에 대한 답변. 'setName()'이'launch()'가 호출 된 후에 반환 될 수 있는지 알아야했습니다. 그게 아니라면 내 오류가 어딘가에 있어야합니다. –

관련 문제