私はいくつかの簡単なことをしたい。Javascriptで未定義の戻り値を処理する方法は?
func1(x).then(func2)
私は任意の(はい、この場合はfunc1
リターンundefined
)func1
から値を返さ使用することはありません、と私はちょうど私がundefined
ので、それを行うとしていますか、func1
後func2
を実行したいですプロパティthen
はありませんか?
ありがとうございます!
私はいくつかの簡単なことをしたい。Javascriptで未定義の戻り値を処理する方法は?
func1(x).then(func2)
私は任意の(はい、この場合はfunc1
リターンundefined
)func1
から値を返さ使用することはありません、と私はちょうど私がundefined
ので、それを行うとしていますか、func1
後func2
を実行したいですプロパティthen
はありませんか?
ありがとうございます!
func1の戻り値の型は約束ではない可能性があるため、func1を約束を返さなければならない新しい関数にラップする必要があります。
例:https://jsfiddle.net/kingychiu/gewm60as/
は、あなたが関数func1として、以下の機能を持っていると仮定し、それはブール値に基づいて約束または未定義を返します。
function I_will_return_promise_or_undefined(bool){
if(bool){
return new Promise(function(resolve, reject){
resolve(null);
});
}else{
return undefined
}
}
あなたはfunc1のをこのようにラップすることができます:
function wrapper(bool){
return new Promise(function(resolve, reject){
var temp = I_will_return_promise_or_undefined(bool);
if(temp === undefined){
// resolve it
resolve(undefined);
}else{
// chain promise
temp.then(function(val){
resolve(val)
});
}
});
}
最後にそれはあなたが望むものです。
// null
wrapper(true).then(function(val){
console.log(true, val);
});
// undefinded
wrapper(false).then(function(val){
console.log(false, val);
})
function a(callbackFunction){
console.log('The first function works');
collbackFunction();
}
function b(){
console.log('The second function works');
}
a(b);
あなたがコンソールに表示されます。 初の機能が動作します 'と、新しい行に:
を「第二の機能は動作しますが 'どのような方法でfunc1'非同期ですか...? – deceze
func1はPromiseを返さなければなりません.. – Keith
@Keith私の質問は、約束を返せない場合、未定義の値からデフォルトのものを作成できますか? – xxx222