var getSyncTime = function () {
return new Promise((resolve, reject) => {
try {
let startTime = new Date().getTime()
setTimeout(() => {
let endTime = new Date().getTime()
let data = endTime - startTime
resolve(data)
}, 500)
} catch (err) {
reject(err)
}
})
}
var getSyncData = async function () {
let time = await getSyncTime()
let data = `endTime - startTime = ${time}`
return data
}
var getData = async function () {
let data = await getSyncData();
console.log(data)
}
getData()
async await 函数 等价的 generator 函数
function run(generator) {
var it = generator();
function go(result) {
if (result.done) {
return result.value;
}
return result.value.then(function (value) {
return go(it.next(value));
}, function (error) {
return go(it.throw(error));
})
}
go(it.next());
}
var getSyncTime = function () {
return new Promise((resolve, reject) => {
try {
let startTime = new Date().getTime()
setTimeout(() => {
let endTime = new Date().getTime()
let data = endTime - startTime
resolve(data)
}, 500)
} catch (err) {
reject(err)
}
})
}
var getSyncData = function* () {
let time = yield getSyncTime()
let data = `endTime - startTime = ${time}`
return data
}
run(function* () {
let data = yield* getSyncData();
console.log(data)
})
return new Promise((resolve, reject) => {
try {
let startTime = new Date().getTime()
setTimeout(() => {
let endTime = new Date().getTime()
let data = endTime - startTime
resolve(data)
}, 500)
} catch (err) {
reject(err)
}
})
}
var getSyncData = async function () {
let time = await getSyncTime()
let data = `endTime - startTime = ${time}`
return data
}
var getData = async function () {
let data = await getSyncData();
console.log(data)
}
getData()
async await 函数 等价的 generator 函数
function run(generator) {
var it = generator();
function go(result) {
if (result.done) {
return result.value;
}
return result.value.then(function (value) {
return go(it.next(value));
}, function (error) {
return go(it.throw(error));
})
}
go(it.next());
}
var getSyncTime = function () {
return new Promise((resolve, reject) => {
try {
let startTime = new Date().getTime()
setTimeout(() => {
let endTime = new Date().getTime()
let data = endTime - startTime
resolve(data)
}, 500)
} catch (err) {
reject(err)
}
})
}
var getSyncData = function* () {
let time = yield getSyncTime()
let data = `endTime - startTime = ${time}`
return data
}
run(function* () {
let data = yield* getSyncData();
console.log(data)
})