V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
a302800411
V2EX  ›  JavaScript

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

  •  1
     
  •   a302800411 · 2016-04-09 23:04:42 +08:00 · 2776 次点击
    这是一个创建于 3179 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    9 条回复    2016-04-12 10:47:10 +08:00
    hyzjshwo
        1
    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
        2
    a302800411  
    OP
       2016-04-10 00:09:49 +08:00
    @hyzjshwo fetch 的 cookie 可以导出来吗? zi ()执行的目的就是初始化 cookie,原本是空,我来试试
    hyzjshwo
        3
    hyzjshwo  
       2016-04-10 00:12:53 +08:00
    看文档 [SameObject] readonly attribute Headers headers;
    hyzjshwo
        4
    hyzjshwo  
       2016-04-10 00:13:09 +08:00
    murmur
        5
    murmur  
       2016-04-10 10:14:09 +08:00
    @hyzjshwo 标准是标准 但是 rn 官方文档的例子可是写了能改 headers 的
    hyzjshwo
        6
    hyzjshwo  
       2016-04-10 12:43:38 +08:00
    @murmur
    1 ,我给楼主的文档是 response-class , RN 官方文档中 set header 的例子是 request-class
    2 ,当然 fetch 这个是个抽象标准,各家具体实现会不一样
    malcolmyu
        7
    malcolmyu  
       2016-04-10 13:37:43 +08:00
    应该不用手动配置,理论上来说 fetch 自动管理 cookie 了。感觉应该是 fetch 请求的域名在 response 的时候没有 set-cookie 头部,由于在 zi() 函数中清理掉了,导致后续的请求都没法携带 cookie 。
    a302800411
        8
    a302800411  
    OP
       2016-04-11 14:14:03 +08:00
    @hyzjshwo
    @murmur
    @malcolmyu
    我有点迷 刚才发现问题可能不是处在函数上 而是 RN 里所有的 fetch 都是异步执行的....
    fetch 1
    fetch 2
    fetch 3
    执行顺序是并发的.....有没有办法能让他们顺序执行?
    尝试了写在 then 函数里,但没用,then 函数里的 fetch 不执行....
    malcolmyu
        9
    malcolmyu  
       2016-04-12 10:47:10 +08:00
    @a302800411 异步执行本身没有问题啊,只要第一个请求响应有 set-cookie 的 header ,后续的 fetch 就应该会带有 cookie 。 fetch 函数返回的是一个 promise ,如果想要顺序执行,可以在 then 里返回一个 fetch ,下一个 then 链就可以获得 then 的结果了。不执行可能是出现了异常,可以在 then 链的最后加一个 catch 试一下。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1419 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 16:49 · PVG 00:49 · LAX 08:49 · JFK 11:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.