Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
github
fetch
提交
46705f79
F
fetch
项目概览
github
/
fetch
大约 1 年 前同步成功
通知
30
Star
25765
Fork
3216
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
fetch
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
46705f79
编写于
9月 29, 2015
作者:
K
Kirill Konshin
提交者:
Mislav Marohnić
10月 12, 2015
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add `Request.clone()` and `Response.clone()` methods
https://fetch.spec.whatwg.org/#dom-response-clone
上级
eb4aec25
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
59 addition
and
0 deletion
+59
-0
fetch.js
fetch.js
+30
-0
test/test.js
test/test.js
+29
-0
未找到文件。
fetch.js
浏览文件 @
46705f79
...
...
@@ -236,6 +236,27 @@
this
.
_initBody
(
body
)
}
function
cloneBody
(
body
)
{
if
(
body
.
_bodyText
)
{
return
body
.
_bodyText
}
else
if
(
body
.
_bodyBlob
)
{
return
body
.
_bodyBlob
}
else
if
(
body
.
_bodyFormData
)
{
return
body
.
_bodyFormData
}
return
null
}
Request
.
prototype
.
clone
=
function
()
{
return
new
Request
(
cloneBody
(
this
),
{
method
:
this
.
method
,
mode
:
this
.
mode
,
credentials
:
this
.
credentials
,
headers
:
new
Headers
(
this
.
headers
),
url
:
this
.
url
})
}
function
decode
(
body
)
{
var
form
=
new
FormData
()
body
.
trim
().
split
(
'
&
'
).
forEach
(
function
(
bytes
)
{
...
...
@@ -279,6 +300,15 @@
Body
.
call
(
Response
.
prototype
)
Response
.
prototype
.
clone
=
function
()
{
return
new
Response
(
cloneBody
(
this
),
{
status
:
this
.
status
,
statusText
:
this
.
statusText
,
headers
:
new
Headers
(
this
.
headers
),
url
:
this
.
url
})
}
Response
.
error
=
function
()
{
var
response
=
new
Response
(
null
,
{
status
:
0
,
statusText
:
''
})
response
.
type
=
'
error
'
...
...
test/test.js
浏览文件 @
46705f79
...
...
@@ -385,6 +385,35 @@ suite('Response', function() {
})
})
test
(
'
clone text response
'
,
function
()
{
var
res
=
new
Response
(
'
{"foo":"bar"}
'
,
{
headers
:
{
'
content-type
'
:
'
application/json
'
}
})
var
clone
=
res
.
clone
()
assert
.
notEqual
(
clone
.
headers
,
res
.
headers
,
'
headers were cloned
'
)
assert
.
equal
(
clone
.
headers
.
get
(
'
content-type
'
),
'
application/json
'
)
return
Promise
.
all
([
clone
.
json
(),
res
.
json
()]).
then
(
function
(
jsons
){
assert
.
deepEqual
(
jsons
[
0
],
jsons
[
1
],
'
json of cloned object is the same as original
'
)
})
})
;(
Response
.
prototype
.
arrayBuffer
?
test
:
test
.
skip
)(
'
clone blob response
'
,
function
()
{
return
fetch
(
'
/binary
'
).
then
(
function
(
response
)
{
return
Promise
.
all
([
response
.
clone
().
arrayBuffer
(),
response
.
arrayBuffer
()]).
then
(
function
(
bufs
){
bufs
.
forEach
(
function
(
buf
){
assert
(
buf
instanceof
ArrayBuffer
,
'
buf is an ArrayBuffer instance
'
)
assert
.
equal
(
buf
.
byteLength
,
256
,
'
buf.byteLength is correct
'
)
var
view
=
new
Uint8Array
(
buf
)
for
(
var
i
=
0
;
i
<
256
;
i
++
)
{
assert
.
equal
(
view
[
i
],
i
)
}
})
})
})
})
test
(
'
error creates error Response
'
,
function
()
{
var
r
=
Response
.
error
()
assert
(
r
instanceof
Response
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录