/** * resolve 异步操做成功时调用的方法,并将异步操做的结果做为参数传递出去 * reject 异步操做失败时调用的方法,并将报错传递出去 */ var promise = new Promise(function(resolve, reject) { var isSuccess = true // 异步操做是否成功 if (isSuccess) { resolve(data) } else { reject(error) } })
promise.then(function() { // 异步操做成功的处理,resolve状态 }, function() { // 异步操做失败的处理,reject状态 })
var timeout = function(ms) { var data = { list: Array(0), msg: 'success', status: 200 } return new Promise(function(resolve, reject) { setTimeout(resolve, ms, data) }) } timeout(1000).then(function(data) { console.log(data) }, function(error) { console.log(error) })
function loadImageAsync(src) { return new Promise(function(resolve, reject) { var image = new Image() image.src = src image.onload = function() { resolve(image) } image.onerror = function() { reject(new Error(`加载图片失败,url:${url}`)) } }) } var url = 'http://n.sinaimg.cn/ent/transform/250/w160h90/20190226/jjhJ-htptaqe5318645.jpg' loadImageAsync(url).then((image) => { document.body.append(image) }, (err) => { console.log(err) })
function timeout(ms) { return new Promise(function(resolve, reject) { setTimeout(() => { resolve() }, ms) }) } async function asyncPrint(ms) { await timeout(ms) console.log(`过去了${ms}毫秒,输出此语句`) } asyncPrint(1000)
async function f() { return 'hello' }
f().then((data) => { console.log(data) // ‘hello’ })
async function f() { throw new Error('出错了') } f().then((data) => { console.log('resolve data:', data) }).catch((err) => { console.log('reject error:', err) })
f().then( data => console.log(data), err => console.log(err) )
async function main() { try { const val1 = await firstStep(); const val2 = await secondStep(val1); const val3 = await thirdStep(val1, val2); console.log('Final: ', val3); } catch (err) { console.error(err); } }