אסינכרוניות

שלוות נפש

משתמש פעיל
ערב טוב
יש לי בעיה עם אסינכרוניות (אולי בהבנה..) אשמח לעזרה
יש לי את הפונקציה הבאה:

async getWords(level: number, num1: number){
debugger
this.service
.ArrWords(level)
.subscribe(
async (result: WordView) => {
this.text = result
console.log(this.text);
this.word = await this.toSpeech(num1)
console.log(this.word)
return(this.word)
},
(err) => {
console.log(err);
}
)
// console.log(word1)
return("vauhj")
}
אני מעונייינת שיחזיר את ה RETURN שבאדום ומחזיר לי את הכתום
לפי ה debugger הוא עוקף על כל הסרוויס ומגיע ישר לסוף
אשמח להבין למה
תודה רבה!!
 

s976

משתמש סופר מקצוען
הנדסת תוכנה
D I G I T A L
יש מצב שאת עורכת את ההודעה ומסמנת את הקוד כקטע קוד?

JavaScript:
async getWords(level: number, num1: number){
debugger
this.service
.ArrWords(level)
.subscribe(
async (result: WordView) => {
this.text = result
console.log(this.text);
this.word = await this.toSpeech(num1)
console.log(this.word)
return(this.word)
},
(err) => {
console.log(err);
}
)
// console.log(word1)
return("vauhj")
}

הסתדרתי ...
 

ari rm

משתמש פעיל
בס"ד

בגלל האסינכרונית הוא מופיע לפני הפונקציה, צריך להוריד את return בסוף ולהכניס אותו בתוך הerror
JavaScript:
async getWords(level: number, num1: number){
    debugger
    this.service
    .ArrWords(level)
    .subscribe(
        async (result: WordView) => {
            this.text = result
            console.log(this.text);
            this.word = await this.toSpeech(num1)
            console.log(this.word)
            return(this.word)
        },
        (err) => {
            console.log(err);
            return("vauhj")
        }
    )
    // console.log(word1)
}
 

גזעי

משתמש מקצוען
הנדסת תוכנה
D I G I T A L
או להוסיף await
JavaScript:
.subscribe(
        await async (result: WordView) => {
נראה לי שזה גם אמור לעבוד.
 

ari rm

משתמש פעיל
או להוסיף await
JavaScript:
.subscribe(
        await async (result: WordView) => {
נראה לי שזה גם אמור לעבוד.
אולי לזאת הייתה הכוונה.
JavaScript:
await this.service
    .ArrWords(level)
    .subscribe(
        async (result: WordView) => {
ואז באמת אפשר להשאיר את הreturn בסוף
 

s976

משתמש סופר מקצוען
הנדסת תוכנה
D I G I T A L
האמת, לא בטוח שהבנתי את השאלה (לדעתי חסרים כאן פרטים). אבל אם אנסה לנחש, נראה לי שזה דומה לשאלה הבאה:
תראו את הקוד דלהלן, תסבירו מה הייתה כוונת המשורר, תסבירו למה זה לא עובד, תציעו איך אפשר לתקן
JavaScript:
function subscribe(callback) {
    setTimeout(() => {
        callback('Did you subscribe? Your message is ready...');
    }, 500)
}


async function getMessageWhenReady() {
    subscribe((message) => {
        return message;
    })
}


(async () => {
    const result = await getMessageWhenReady();
    console.log(result);
})()

אם זה רלוונטי, אצרף תשובה. או שמישהו אחר אולי רוצה לרשום תשובה. (בכל מקרה, מאוד כדאי להבין לבד. זה תסבוך קלאסי של JS)
לנוחיותכם https://jsfiddle.net/s976/xyf96me4/
 
נערך לאחרונה ב:

גזעי

משתמש מקצוען
הנדסת תוכנה
D I G I T A L
האמת, לא בטוח שהבנתי את השאלה (לדעתי חסרים כאן פרטים). אבל אם אנסה לנחש, נראה לי שזה דומה לשאלה הבאה:
תראו את הקוד דלהלן, תסבירו מה הייתה כוונת המשורר, תסבירו למה זה לא עובד, תציעו איך אפשר לתקן
JavaScript:
function subscribe(callback) {
    setTimeout(() => {
        callback('Did you subscribe? Your message is ready...');
    }, 500)
}


async function getMessageWhenReady() {
    subscribe((message) => {
        return message;
    })
}


(async () => {
    const result = await getMessageWhenReady();
    console.log(result);
})()

אם זה רלוונטי, אצרף תשובה. או שמישהו אחר אולי רוצה לרשום תשובה. (בכל מקרה, מאוד כדאי להבין לבד. זה תסבוך קלאסי של JS)
לנוחיותכם https://jsfiddle.net/s976/xyf96me4/
לא נכנסתי לפידל, אבל אני לא מבין את ה-"תסבוך" getMessageWhenReady לא מחזיר כלום, אז זה console.log(undefined)

אני חושב שה"תסבוך" הוא האשליה שsetTimeout הוא פונקציה אסינכרונית שמחזירה ערך, והיא לא.
 

s976

משתמש סופר מקצוען
הנדסת תוכנה
D I G I T A L
לא נכנסתי לפידל, אבל אני לא מבין את ה-"תסבוך" subscribe לא מחזיר כלום, אז זה console.log(undefined)

אני חושב שה"תסבוך" הוא האשליה שsetTimeout הוא פונקציה אסינכרונית שמחזירה ערך, והיא לא.
התסבוך הוא - איך לפתור את זה
 

גזעי

משתמש מקצוען
הנדסת תוכנה
D I G I T A L
התסבוך הוא - איך לפתור את זה
JavaScript:
return new Promise(r => {

setTimeout(()=>r(callback('message')), 500);

})

עריכה:
וכמובן
JavaScript:
return await subscribe((message) => { // ...

עריכה 2:
יש לך עוד כאלה?
 
נערך לאחרונה ב:

אולי מעניין אותך גם...

הפרק היומי

הפרק היומי! כל ערב פרק תהילים חדש. הצטרפו אלינו לקריאת תהילים משותפת!


תהילים פרק לא

א לַמְנַצֵּחַ מִזְמוֹר לְדָוִד:ב בְּךָ יְהוָה חָסִיתִי אַל אֵבוֹשָׁה לְעוֹלָם בְּצִדְקָתְךָ פַלְּטֵנִי:ג הַטֵּה אֵלַי אָזְנְךָ מְהֵרָה הַצִּילֵנִי הֱיֵה לִי לְצוּר מָעוֹז לְבֵית מְצוּדוֹת לְהוֹשִׁיעֵנִי:ד כִּי סַלְעִי וּמְצוּדָתִי אָתָּה וּלְמַעַן שִׁמְךָ תַּנְחֵנִי וּתְנַהֲלֵנִי:ה תּוֹצִיאֵנִי מֵרֶשֶׁת זוּ טָמְנוּ לִי כִּי אַתָּה מָעוּזִּי:ו בְּיָדְךָ אַפְקִיד רוּחִי פָּדִיתָה אוֹתִי יְהוָה אֵל אֱמֶת:ז שָׂנֵאתִי הַשֹּׁמְרִים הַבְלֵי שָׁוְא וַאֲנִי אֶל יְהוָה בָּטָחְתִּי:ח אָגִילָה וְאֶשְׂמְחָה בְּחַסְדֶּךָ אֲשֶׁר רָאִיתָ אֶת עָנְיִי יָדַעְתָּ בְּצָרוֹת נַפְשִׁי:ט וְלֹא הִסְגַּרְתַּנִי בְּיַד אוֹיֵב הֶעֱמַדְתָּ בַמֶּרְחָב רַגְלָי:י חָנֵּנִי יְהוָה כִּי צַר לִי עָשְׁשָׁה בְכַעַס עֵינִי נַפְשִׁי וּבִטְנִי:יא כִּי כָלוּ בְיָגוֹן חַיַּי וּשְׁנוֹתַי בַּאֲנָחָה כָּשַׁל בַּעֲוֹנִי כֹחִי וַעֲצָמַי עָשֵׁשׁוּ:יב מִכָּל צֹרְרַי הָיִיתִי חֶרְפָּה וְלִשֲׁכֵנַי מְאֹד וּפַחַד לִמְיֻדָּעָי רֹאַי בַּחוּץ נָדְדוּ מִמֶּנִּי:יג נִשְׁכַּחְתִּי כְּמֵת מִלֵּב הָיִיתִי כִּכְלִי אֹבֵד:יד כִּי שָׁמַעְתִּי דִּבַּת רַבִּים מָגוֹר מִסָּבִיב בְּהִוָּסְדָם יַחַד עָלַי לָקַחַת נַפְשִׁי זָמָמוּ:טו וַאֲנִי עָלֶיךָ בָטַחְתִּי יְהוָה אָמַרְתִּי אֱלֹהַי אָתָּה:טז בְּיָדְךָ עִתֹּתָי הַצִּילֵנִי מִיַּד אוֹיְבַי וּמֵרֹדְפָי:יז הָאִירָה פָנֶיךָ עַל עַבְדֶּךָ הוֹשִׁיעֵנִי בְחַסְדֶּךָ:יח יְהוָה אַל אֵבוֹשָׁה כִּי קְרָאתִיךָ יֵבֹשׁוּ רְשָׁעִים יִדְּמוּ לִשְׁאוֹל:יט תֵּאָלַמְנָה שִׂפְתֵי שָׁקֶר הַדֹּבְרוֹת עַל צַדִּיק עָתָק בְּגַאֲוָה וָבוּז:כ מָה רַב טוּבְךָ אֲשֶׁר צָפַנְתָּ לִּירֵאֶיךָ פָּעַלְתָּ לַחֹסִים בָּךְ נֶגֶד בְּנֵי אָדָם:כא תַּסְתִּירֵם בְּסֵתֶר פָּנֶיךָ מֵרֻכְסֵי אִישׁ תִּצְפְּנֵם בְּסֻכָּה מֵרִיב לְשֹׁנוֹת:כב בָּרוּךְ יְהוָה כִּי הִפְלִיא חַסְדּוֹ לִי בְּעִיר מָצוֹר:כג וַאֲנִי אָמַרְתִּי בְחָפְזִי נִגְרַזְתִּי מִנֶּגֶד עֵינֶיךָ אָכֵן שָׁמַעְתָּ קוֹל תַּחֲנוּנַי בְּשַׁוְּעִי אֵלֶיךָ:כד אֶהֱבוּ אֶת יְהוָה כָּל חֲסִידָיו אֱמוּנִים נֹצֵר יְהוָה וּמְשַׁלֵּם עַל יֶתֶר עֹשֵׂה גַאֲוָה:כה חִזְקוּ וְיַאֲמֵץ לְבַבְכֶם כָּל הַמְיַחֲלִים לַיהוָה:
נקרא  5  פעמים

אתגר AI

הבעות פנים • אתגר 57

לוח מודעות

למעלה