JavaScript (react native)怎么把子函数的 Cookie 传递给父函数?

2016-04-09 23:04:42 +08:00
 a302800411

大概就是,fu 函数还要继续使用 zi 函数的 cookie,两个 fetch 写在一个区块里没有问题,但是重构出一个单独函数,cookie 就没了,才开始学 js,不知道怎么传递这个关系

zi(){ fetch('http://xxx', { credentials: "same-origin", }); }
fu(){ zi(); fetch('http://xxx', { credentials: "same-origin", }); }

2781 次点击
所在节点    JavaScript
9 条回复
hyzjshwo
2016-04-10 00:04:00 +08:00
保存需要用的 cookie 不行吗?
比如 cookies = {credentials: "same-origin",anotherKey:"value"}
zi(cookies){ fetch('http://xxx', cookies); }
fu(cookies){ zi(cookies); fetch('http://xxx', cookies); }
持久化可以用 RN 的 AsyncStorage
不知道我理解对了吗?
a302800411
2016-04-10 00:09:49 +08:00
@hyzjshwo fetch 的 cookie 可以导出来吗? zi ()执行的目的就是初始化 cookie,原本是空,我来试试
hyzjshwo
2016-04-10 00:12:53 +08:00
看文档 [SameObject] readonly attribute Headers headers;
hyzjshwo
2016-04-10 00:13:09 +08:00
murmur
2016-04-10 10:14:09 +08:00
@hyzjshwo 标准是标准 但是 rn 官方文档的例子可是写了能改 headers 的
hyzjshwo
2016-04-10 12:43:38 +08:00
@murmur
1 ,我给楼主的文档是 response-class , RN 官方文档中 set header 的例子是 request-class
2 ,当然 fetch 这个是个抽象标准,各家具体实现会不一样
malcolmyu
2016-04-10 13:37:43 +08:00
应该不用手动配置,理论上来说 fetch 自动管理 cookie 了。感觉应该是 fetch 请求的域名在 response 的时候没有 set-cookie 头部,由于在 zi() 函数中清理掉了,导致后续的请求都没法携带 cookie 。
a302800411
2016-04-11 14:14:03 +08:00
@hyzjshwo
@murmur
@malcolmyu
我有点迷 刚才发现问题可能不是处在函数上 而是 RN 里所有的 fetch 都是异步执行的....
fetch 1
fetch 2
fetch 3
执行顺序是并发的.....有没有办法能让他们顺序执行?
尝试了写在 then 函数里,但没用,then 函数里的 fetch 不执行....
malcolmyu
2016-04-12 10:47:10 +08:00
@a302800411 异步执行本身没有问题啊,只要第一个请求响应有 set-cookie 的 header ,后续的 fetch 就应该会带有 cookie 。 fetch 函数返回的是一个 promise ,如果想要顺序执行,可以在 then 里返回一个 fetch ,下一个 then 链就可以获得 then 的结果了。不执行可能是出现了异常,可以在 then 链的最后加一个 catch 试一下。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/269856

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX