これはqを使用して、基本的に私のコードです:は別の約束で約束を呼び出すと、条件付きで
let d = Q.defer();
let result = {
name: 'peter'
};
d.resolve(result);
return d.promise;
しかし、私は今、特定の条件に基づいて、ステップを実行する必要があります。このステップは、約束を返す別のオブジェクトを呼び出すことです。それで正しい言葉なら、私は約束事を入れています。このような
何か:
let d = Q.defer();
let result = {
name: 'peter'
};
if (someParameter) {
otherService.getValue() // Let's say it returns 'mary'
.then((res) => {
result.name = res;
});
}
d.resolve(result);
return d.promise;
これは(name
プロパティがまだ 'ピーター' です)が動作しません。おそらく私の内なる約束が後で解決されるという事実のためでしょうか?
私もこれを試しましたが、約束を返すotherServiceを呼び出すと動作しません。
let d = Q.defer();
let result = {
name: 'peter'
};
d.resolve(result);
return d.promise
.then((data) => {
if (someParameter) {
// Works
data.name = 'john';
// Doesn't work
otherService.getValue()
.then((res) => {
data.name = res;
});
}
return data;
});
ここで、名前は「mary」ではなく「john」になります。
明らかに私は約束を誤解していますが、私はそれについて私の頭を包むことはできません。
にあなたのコードを簡素化することができます(http://stackoverflow.com/q/26599798/1048572) – Bergi