Async / Await νμ μ§μμ νμ¬ νλ‘ν νμ μμ λ²κ·Έλ‘ μΈν΄ μ½λμμ μλͺ»λ μμΈκ° λ°μνλ κ²μ λ°κ²¬νμ΅λλ€.
λ¬Έμ μ μμ§ λ awaitκ°μλ ν¨μμ for 루ν λ΄λΆμ "return"λ¬Έμ΄ μμΌλ©΄ μ€λ₯κ° λ°μνλ€λ κ² μ λλ€.
μ΄ μ½λλ₯Ό μ€ννλ©΄ "num"μ΄> .5 (κ·Έλ¦¬κ³ "return true"λ¬Έμ΄ νκ° λ λλ§λ€) __generator μ½λ λ΄μμ λ€μκ³Ό κ°μ μ€λ₯κ° λ°μνλ κ²μ λ³Ό μ μμ΅λλ€. "TypeError : Unable to get property '0'of undefined or null referenceβ
async function itemExists(): Q.Promise<boolean> {
var numTries = 3;
for (var i = 0; i < numTries; i++) {
var num = await Q.fcall(function() { return Math.random() });
console.log(num);
if (num > .5) {
return true;
}
}
return false;
}
itemExists().then(function(val) {
console.log("All values greater than .5: " + val)
}).catch(function(e) {
console.error("Error: " + e);
});
λ¬Έμ λ 루ν λ΄μβreturnβλ¬ΈμΌλ‘ μΈν΄ λ°μν©λλ€. μλ₯Ό λ€μ΄, μ§μ λ³μλ₯Ό μ€μ νκΈ° μν΄ itemExists ()λ₯Ό μμ ν λ€μ "break"λ¬Έμ ν΅ν΄ 루νλ₯Ό λ²μ΄λλ©΄ μ½λκ° μλν©λλ€.
// With workaround (NOT short-circuiting the loop)
async function itemExists(): Q.Promise<boolean> {
var numTries = 3;
var result = false;
for (var i = 0; i < numTries; i++) {
var num = await Q.fcall(function() { return Math.random() });
console.log(num);
if (num > .5) {
result = true;
break;
}
}
return result;
}
λ¬Έμ μ λν λΉ λ₯Έ λΆμμ μμ± λ μ½λμμλ κ² κ°μ΅λλ€. μμΈλ λ€μκ³Ό κ°μ΅λλ€.
try {
var operation = body(state);
opcode = operation[0], arg = operation[1];
} catch (e) {
opcode = 1 /*throw*/, arg = e;
}
κ·Έλ¬λ μ€μ λ²μΈμ μμ± λ return λ° break λ¬Έμ λΆμΌμΉκ° μλ€λ μ¬μ€ μΈ κ² κ°μ΅λλ€ (λ΄κ° λ§ν μμλ ν). μ¦, 3μ λλλ‘ "ν΄μ"κ³Ό "λ°ν"μ²λΌ 보μ λλ€.
function itemExists() {
return new Q.Promise(function (_resolve) {
_resolve(__awaiter(__generator(function (_state) {
switch (_state.label) {
case 0:
numTries = 3;
i = 0;
_state.label = 1;
case 1:
if (!(i < numTries))
return [3 /*break*/, 4];
return [4 /*yield*/, Q.fcall(function () {
return Math.random();
})];
case 2:
num = _state.sent;
console.log(num);
if (num > .5) {
return [3 /*return*/, true];
}
_state.label = 3;
case 3:
i++;
return [3 /*break*/, 1];
case 4:
return [2 /*return*/, false];
}
})));
});
var numTries, i, num;
}
itemExists().then(function (val) {
console.log("All values greater than .5: " + val);
}).catch(function (e) {
console.error("Error: " + e);
});
μ΄ μν λ¨Έμ μ μμ±κΈ°μ νμ μμ€ λ°©μΆμ²λΌ 보μ
λλ€. es5 λ₯Ό νκ²ν
ν λ yield
λ₯Ό μ§μνλ€λ μλ―Έμ
λκΉ?
@ d180cf μ°λ¦¬λ κ·Έκ²μ λ Έλ ₯νκ³ μμ΅λλ€ :)
2.1 릴리μ€λ₯Ό λμμΌλ‘νλ λΉλκΈ° ν¨μμ λν μ΄λ¬ν νμ λ³νμ μ λ²μ μΈ 4685646λΆν°λ λ μ΄μ λ¬Έμ κ°λμ§ μμ΅λλ€.
κ°μ₯ μ μ©ν λκΈ
@ d180cf μ°λ¦¬λ κ·Έκ²μ λ Έλ ₯νκ³ μμ΅λλ€ :)