我有一个场景,比如我需要从 api 请求获取一些数据,并基于该数据在屏幕上显示图像。
return Class.extend({
loadData: function (callbacks) {
callbacks.onSuccess(
[
{
"id":"1",
"title":"Apple",
"img" : "static/img/fruit/apple.png"
},
{
"id":"2",
"title":"Banana",
"img" : "static/img/fruit/banana.png"
},
{
"id":"3",
"title":"Grapes",
"img" : "static/img/fruit/grapes.png"
},
{
"id":"4",
"title":"Orange",
"img" : "static/img/fruit/orange.png"
},
{
"id":"5",
"title":"Peach",
"img" : "static/img/fruit/peach.png"
},
{
"id":"6",
"title":"Pear",
"img" : "static/img/fruit/pear.png"
}
]
);
}
});
当我使用上面的代码时,它工作得很好,但是我需要来自 api 的数据,所以我实现了一种获取数据的方法,并且我也创建了一个 promise ,但是这个不起作用
return Class.extend({
// You will probably want to do something more useful then returning static data
loadData: function (callbacks) {
callbacks.onSuccess(
evtBind().then(function (res) {
console.log("res", res);
return res;
})
);
}
});
function evtBind() {
var device = RuntimeContext.getDevice();
var get = function () {
return new Promise(function (resolve, reject) {
// do a thing, possibly async, then…
device.executeCrossDomainGet('http://localhost:3000/result', {
onSuccess: function (responseObject) {
resolve(responseObject);
},
onError: function (response) {
reject(response);
}
});
});
};
return get();
}
我的代码与上面的代码类似。有人可以帮我解决这个问题吗?
最佳答案
如果您在 res
中获得了正确的数组,那么为什么不使用该数组调用 onSuccess
呢?目前,您正在向 onSuccess
传递一个 promise ,因此如果您这样做,则必须调整那里的代码。
loadData: function (callbacks) {
evtBind().then(callbacks.onSuccess);
}
其缩写为:
loadData: function (callbacks) {
evtBind().then(res => callbacks.onSuccess(res));
}
关于javascript - 方法在数据静态时工作,并在从 Promise 获取数据时归档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48985588/