Javascript 承诺、获取、编码风格。请解释一下。然后(checkStatus)。然后(parseJSON)
我有测试代码Javascript 承诺、获取、编码风格。请解释一下。然后(checkStatus)。然后(parseJSON),javascript,promise,fetch,Javascript,Promise,Fetch,我有测试代码 function checkStatus(response) { if (response.status >= 200 && response.status < 300) { return Promise.resolve(response) } else { return Promise.reject(new Error(response.statusText)); } } function par
function checkStatus(response) {
if (response.status >= 200 && response.status < 300) {
return Promise.resolve(response)
} else {
return Promise.reject(new Error(response.statusText));
}
}
function parseJSON(response) {
return response.json()
}
或者我可以这样写:
function load(id) {
return fetch('/api/test/'+ id + '/', {method: 'get'})
.then(checkStatus)
.then(parseJSON)
.catch(error=>console.error(error))
请解释第二种变体。它如何。然后(检查状态)
.then(parseJSON)
work?我只写函数的引用,不运行它。
。然后
将函数作为其参数。。。它调用传递单个参数的函数,该参数是承诺的解析值
所以想想
return fetch('/api/test/'+ id + '/', {method: 'get'})
.then(checkStatus)
作为
顺便说一句,这并不局限于promise/then类型代码。。。考虑下面的
相同的概念-除了setTimout中回调返回的值被忽略。但是,在.then()
中,回调返回的值用作承诺的解析值。。。这就是承诺链的工作原理(这是一个过于简化的解释)
@然而,oksana,这两个变量在
这个
将指向的函数内部有细微的差别,你将传递给然后
@balajisoundar-这就是为什么我使用短语将A
看作B
。而不是说A
就像B
return fetch('/api/test/'+ id + '/', {method: 'get'})
.then(checkStatus)
return fetch('/api/test/'+ id + '/', {method: 'get'})
.then(function(resultOfPromise) {
return checkStatus(resultPromise);
})
function doThings(p1) {
console.log(p1);
return 'good bye';
}
setTimeout(doThings, 1000, "hello world");