我正在使用 jquery 发送ajax请求来执行某些任务,并根据该jquery GET响应的结果,我正在对Parse Js库执行一些操作。
e.g。
我创建了一个这样的方法来发送请求。
sendRequest(URL, userId){
return $.ajax({
url: URL + userId,
type: 'GET',
}).fail((responseData) => {
if (responseData.responseCode) {
console.error(responseData.responseCode);
}
});
}
我正在使用它 -
sendRequest(URL, userId)
.then(
(data) => {
// Example
// Get some value from data and save it in Parse object
var GameScore = Parse.Object.extend("GameScore");
var gameScore = new GameScore();
gameScore.set("score", 1337);
gameScore.set("playerName", "Sean Plott");
gameScore.set("cheatMode", false);
return gameScore.save();
}
).then(
(changedGameObj) => {
console.log(changedGameObj);
// At this point receiving a parse promise which is not resolved yet.
},
(error) => {
}
);
我知道我正在混合jquery promise和Parse promise但是不知道如何解析解析promises的解决方案因为jquery promises之前得到了解决。
我很想在js中答应,请指出我错在哪里。
答案 0 :(得分:0)
从我可以看到你的承诺链是这个(删除功能等):
~/Library
您可以查看jQuery' s deferred的文档以获取更多详细信息。
要尝试两件事:
1)Convert jQuery deferred to a real promise。我这样做是因为我不在乎学习jQuery的延迟。你可能需要在这里挖掘......
Bergi建议:$.ajax().fail().then().then(success(), error());
OR
2)将你的Parse承诺链接在同一return Parse.Promise.resolve(jqueryPromise)
:
then()
答案 1 :(得分:0)
基于Michael在第一部分的建议,我创建了一个帮助方法,将Jquery延迟转换为Parse promise。我觉得这样做很优雅。
convertJqueryToParsePromise(jqueryPromise) {
let promise = new Parse.Promise();
jqueryPromise
.then(
(results) => {
promise.resolve(results);
},
(error) => {
promise.reject(error);
}
);
return promise;
}
用法:
convertJqueryToParsePromise(sendRequest(URL, dataToSend))
.then(
(success) => {
// Do something here
},
(error) => {
}
);