2016-02-10 12 views
25

これは愚かな質問と思われるかもしれませんが、私はこのトピックで初心者です。私はノードjsの約束事に取り組んでいます。そして、私はpromise関数にパラメータを渡したいと思います。しかし、私はそれを理解することができませんでした。約束事関数にパラメータを渡す方法

someModule.someFunction.then(username, password,function(uid) { 
    /*stuff */ 
} 

と機能

var someFunction = new Promise(username, password, function(resolve, reject) { 
    /*stuff using username, password*/ 
    if (/* everything turned out fine */) { 
    resolve("Stuff worked!"); 
    } else { 
    reject(Error("It broke")); 
    } 
}); 
+1

、あなただけの高いスコープ – adeneo

+0

に 'username'と' password'を定義することができます。しかし、私は別のモジュールからの約束を呼び出しています、また、ユーザー名とパスワードは静的ではなく、クライアント側からのものです。 1つの機能が設定し、もう1つが使用する何らかの種類の変数を定義することは安全ですか?変数が別のクライアントによって変更されるリスクはありますか? – kundante

+0

@kundanteあなたはどのグローバルも必要ありません。閉鎖について学ぶ。 – SLaks

答えて

54

ような関数内で自分の約束をラップか、それはすぐにその仕事をするが開始されますです。さらに、あなたは、関数にパラメータを渡すことができます。

var someFunction = function(username, password) { 
    return new Promise(function(resolve, reject) { 
    /*stuff using username, password*/ 
    if (/* everything turned out fine */) { 
     resolve("Stuff worked!"); 
    } else { 
     reject(Error("It broke")); 
    } 
    }); 
} 

次に、それを使用する:

someModule.someFunction(username, password).then(function(uid) { 
    /* stuff */ 
}) 

 

ES6:

const someFunction = (username, password) => { 
    return new Promise((resolve, reject) => { 
    /*stuff using username, password*/ 

    if (/* everything turned out fine */) { 
     resolve("Stuff worked!"); 
    } else { 
     reject(Error("It broke")); 
    } 
    }); 
}; 

用途:

someModule.someFunction(username, password).then(uid => { 
    /* stuff */ 
}); 
0

別の方法:

var promise1 = new Promise(function(resolve, reject) { 
 
    resolve('Success!'); 
 
}); 
 
var extraData = 'ImExtraData'; 
 
promise1.then(function(value) { 
 
    console.log(value, extraData); 
 
    // expected output: "Success!" "ImExtraData" 
 
}, extraData);
それを行うには理由がありません

関連する問題