我们说我有 //here jsonString is your json in string format
JSONObject obj3=new JSONObject(jsonString);
JSONObject obj4=null;
//Getting all the keys inside json object with keys- from and to
Iterator<String> keys= obj3.keys();
while (keys.hasNext())
{
String keyValue = (String)keys.next();
obj4 = obj3.getJSONObject(keyValue);
//getting string values with keys- from and to
String from = obj4.getString("from");
String to = obj4.getString("to");
int hourstart = Integer.parseInt(from);
int hoursclose = Integer.parseInt(to);
System.out.println("From : "+ hourstart +" To : "+ hoursclose);
}
这样的话:
Promise
如果var promise = new Promise(function(resolve, reject) {
// Do some async thing
});
promise.then(function(response) {
// Then do some other stuff
});
async
在致电Promise
之前完成,会怎样?通常情况下,我只在.then()
函数中执行长时间运行的任务,但是如果它真的很快完成一次会怎么样?
答案 0 :(得分:25)
正如预期的那样:如果在promise已经解决之后调用,那么在这种情况下将立即调用回调。
很容易测试:
var promise = new Promise(function(resolve, reject) {
resolve(123);
});
setTimeout(function() {
promise.then(function(response) {
alert(response);
});
}, 1000)
答案 1 :(得分:12)
正如其他人已经指出的那样,您可以在解析承诺之前或之后添加.then
回调,甚至可以添加多个回调。
这些回调将按照添加顺序调用,但总是异步,在当前转向事件循环之后。因此,如果在添加.then
时已经解决了承诺,则会立即调用您的处理程序,但是在“ascynchronous意义上”。
[...]
onFulfilled
和onRejected
异步执行,在调用then
的事件循环之后,以及新堆栈。
答案 2 :(得分:5)
承诺具有状态,这意味着即使在承诺得到履行之后,您也可以使用.then
向其附加回调,并且将调用它们,其结果与承诺在履行之后履行相同连接。
实现成功承诺的最终状态。这意味着您可以使用promise作为原始响应的缓存,为将来履行的承诺附加更多处理程序。
然后()
只要这个承诺是,就会调用其中一个提供的函数 履行或拒绝。返回一个新的承诺,其状态发生变化 取决于此承诺和提供的回调函数。
此方法返回后始终会调用相应的回调, 即使这个承诺已经履行或被拒绝。你也可以 在同一个promise上多次调用then方法,并且 回调将按照注册顺序调用。
答案 3 :(得分:2)
在承诺为then
之前永远不会调用resolved
回调,这就是我认为你完全意味着的意思。但是,如果在从函数返回之前解析了promise,那么在该时刻之后链接的任何其他成功回调仍将被执行。例如,
function getMeAResolvedPromise() {
var prom = new Promise();
prom.resolve('some val');
return prom;
}
...
getMeAResolvedPromise.then(function(result) {
// this will still be executed
});