加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
apisample10.html 2.91 KB
一键复制 编辑 原始数据 按行查看 历史
<!DOCTYPE HTML>
<html>
<head>
<title>Async Tests and Promises</title>
</head>
<body>
<h1>Async Tests and Promises</h1>
<p>This test assumes ECMAScript 6 Promise support. Some failures are expected.</p>
<div id="log"></div>
<script src="testharness.js"></script>
<script src="testharnessreport.js"></script>
<script>
test(function() {
var p = new Promise(function(resolve, reject) {});
assert_true('then' in p);
assert_equals(typeof Promise.resolve, 'function');
assert_equals(typeof Promise.reject, 'function');
}, "Promises are supported in your browser");
(function() {
var t = async_test("Promise resolution");
t.step(function() {
Promise.resolve('x').then(
t.step_func(function(value) {
assert_equals(value, 'x');
t.done();
}),
t.unreached_func('Promise should not reject')
);
});
}());
(function() {
var t = async_test("Promise rejection");
t.step(function() {
Promise.reject(Error('fail')).then(
t.unreached_func('Promise should reject'),
t.step_func(function(reason) {
assert_true(reason instanceof Error);
assert_equals(reason.message, 'fail');
t.done();
})
);
});
}());
(function() {
var t = async_test("Promises resolution chaining");
t.step(function() {
var resolutions = [];
Promise.resolve('a').then(
t.step_func(function(value) {
resolutions.push(value);
return 'b';
})
).then(
t.step_func(function(value) {
resolutions.push(value);
return 'c';
})
).then(
t.step_func(function(value) {
resolutions.push(value);
assert_array_equals(resolutions, ['a', 'b', 'c']);
t.done();
})
).catch(
t.unreached_func('promise should not have rejected')
);
});
}());
(function() {
var t = async_test("Use of step_func with Promises");
t.step(function() {
var resolutions = [];
Promise.resolve('x').then(
t.step_func_done(),
t.unreached_func('Promise should not have rejected')
);
});
}());
(function() {
var t = async_test("Promises and test assertion failures (should fail)");
t.step(function() {
var resolutions = [];
Promise.resolve('x').then(
t.step_func(function(value) {
assert_true(false, 'This failure is expected');
})
).then(
t.unreached_func('Promise should not have resolved')
).catch(
t.unreached_func('Promise should not have rejected')
);
});
}());
(function() {
var t = async_test("Use of unreached_func with Promises (should fail)");
t.step(function() {
var resolutions = [];
var r;
var p = new Promise(function(resolve, reject) {
// Reject instead of resolve, to demonstrate failure.
reject(123);
});
p.then(
function(value) {
assert_equals(value, 123, 'This should not actually happen');
},
t.unreached_func('This failure is expected')
);
});
}());
</script>
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化