Javascript 在重构代码中使用fetch
当我在一个文件中编写代码时,我已经能够对Javascript 在重构代码中使用fetch,javascript,promise,fetch,Javascript,Promise,Fetch,当我在一个文件中编写代码时,我已经能够对fetch的承诺了如指掌,但一旦我开始将代码拆分成多个文件,我就会陷入困境。这种情况已经发生过好几次了,我肯定是遗漏了或是转换了一些概念 这是在node.js的上下文中 我已将我的承诺代码放在一个单独的文件中: module.exports = function(url, branch) { return fetch(url) .then( res => res.json()) // here's the meat and potatoe
fetch
的承诺了如指掌,但一旦我开始将代码拆分成多个文件,我就会陷入困境。这种情况已经发生过好几次了,我肯定是遗漏了或是转换了一些概念
这是在node.js的上下文中
我已将我的承诺代码放在一个单独的文件中:
module.exports = function(url, branch) {
return fetch(url)
.then( res => res.json())
// here's the meat and potatoes.
.then( data => data => Object.keys(data.values).filter( value => value.source.branch === branch))
.catch( err => console.log(err))
};
然后在我使用此函数的文件中:
const getDescription = require('./get_description');
getDescription(url, branch )
// This is where I want to use this value.
.then( desc => console.log(desc) )
.catch( err => console.log(err) );
而且,它只是吐出[函数]
当我把它们放在一起时,我似乎能够得到我需要的东西,但我也在做一些奇怪的事情,我是如何将res.json()嵌套在另一个里面的
fetch(`https://api.bitbucket.org/2.0/repositories/${circle_project_username}/${circle_project_reponame}/pullrequests`, {headers: {Authorization: auth}})
.then((res) => {
res.json().then((data) => {
Object.keys(data.values).forEach(key => {
if (data.values[key].source.branch.name === branch) {
console.log(data.values[key].description);
}
})
})
})
.catch(res => console.log(res));
您返回的是函数res.json
,而不是res.json()
替换
.then( res => res.json)
与
也
修理
.then( data => data => Object.keys(data.values).filter( value => value.source.branch === branch))
与
删除这些.catch(err=>console.log(err))代码>来自任何地方-通过处理这些错误而不实际处理它们,您只是在制造混乱的流!您有一个输入错误。然后(res=>res.json)
很好的捕获,但这不会改变outcome@icicleking更新我的答案。我认为您的代码中还有另一个错误,您返回的是函数,而不是经过过滤的数组/数据
.then( data => data => Object.keys(data.values).filter( value => value.source.branch === branch))
.then( data => Object.keys(data.values).filter( value => value.source.branch === branch))