我正在使用節點js,並且在我的代碼Controller,Service,DAO中有三層。執行流程是通過服務從控制器到DAO,再次控制從DAO返回到控制器。 DAO層中有回調函數,它們將輸出設置爲變量。但問題是控制回到控制器後回調函數正在執行。即時通訊得到一個未定義爲我的變量輸出。這是因爲Node是一個異步。節點Js中的回調函數問題?
有沒有辦法改變這個流程,以便第一個回調函數完成執行,然後控制從DAO返回到服務和控制器。
我正在使用節點js,並且在我的代碼Controller,Service,DAO中有三層。執行流程是通過服務從控制器到DAO,再次控制從DAO返回到控制器。 DAO層中有回調函數,它們將輸出設置爲變量。但問題是控制回到控制器後回調函數正在執行。即時通訊得到一個未定義爲我的變量輸出。這是因爲Node是一個異步。節點Js中的回調函數問題?
有沒有辦法改變這個流程,以便第一個回調函數完成執行,然後控制從DAO返回到服務和控制器。
您必須傳遞代碼的各個部分,這些部分應在DAO內容完成後作爲DAO層的回調完成。這通常看起來有點難看,但它是node.js(異步)方式,有時稱爲「callback hell」。如果您需要更多信息,請提供一些您想要做的事情的代碼示例。
作爲一個起點,您可能想嘗試使用異步庫:https://github.com/caolan/async或「npm install async」。這聽起來像你可能想要的是async.series(),它可以讓你構建一些順序運行的回調函數,讓你更好地控制程序的流程。好教程在這裏:http://www.sebastianseilund.com/nodejs-async-in-practice。
Node.js的整個想法是異步的。所以甚至不要試圖解決這個問題,並更好地調整你的設計。 – Krumelur