私は$ q(Angular.js)を使用しましたが、.then
コールで約束を返すことがよくあります。その結果、次の.then
コールは、前回の約束が完了するまで待つことになりました。JQueryプロミスとES6プロミスを混ぜる
私はネイティブes6の約束を使って、コールバックベースのライブラリを「約束する」ことを試みています。私はそうすることができません。
.then
チェーンの次の値は、その約束の解決された値ではなく約束オブジェクトです。約束が解決される前に、次の.then
の値を呼び出し、最後の戻り値を返します。
これまでの約束を待っていますか?
例:
$.ajax({
url: "//localhost:3000/api/tokens",
type: "POST",
data: JSON.stringify({
user: {
email: '[email protected]',
password: 'password123'
}
}),
contentType: "application/json"
})
.then(data => data.token.encoded) // OK
.then(token => Farmbot({ token: token })) // OK
.then(function(bot){ // OK
return new Promise(function(resolve, reject) {
bot.connect(function(){ resolve(bot); });
});
}, errorr)
.then(function(bot){ // NOT OK!
// passes in an unresolved promise object, which is useless.
//
bot; // => {[[PromiseStatus]]: "pending", [[PromiseValue]]: undefined}
});
私の質問は次のとおりです。
ドゥES6の約束は、sが解決することを約束し、前.then
」待ちますか?
角度とjQuery特に優れbedfellowsをすることはありません。角型アプリケーションでは、実際には 'jQuery.ajax()'ではなく '$ http()'を使用するべきです。 –