如果我的问题听起来很愚蠢,我深表歉意,但我发现在许多情况下我需要在许多文件中使用全局变量,例如代表数据库和 redis 客户端的变量,但是这些变量本身需要等待从 promises 或 async 中获取它们的值初始化与数据库或 redis 服务器的通信的函数。
我想做这样的事情
init.js:
export default async () => {
return await initializeWhatever()
}
Run Code Online (Sandbox Code Playgroud)
数据库.js:
import init from './init'
let db = null
init().then(val => db = val)
export default db
Run Code Online (Sandbox Code Playgroud)
api.js:
import db from './db'
const doApi = req => {
db('users').select({username:req.param.username})
}
Run Code Online (Sandbox Code Playgroud)
但是db导入的变量api.js始终为空,为什么在init()完成时它没有更新为正确的值?如果我使用 db 的方法是错误的,那么导出异步计算的全局变量的正确方法是什么?
我正在使用django,但我认为这个问题主要属于Python本身.
我有类似的东西:
def get(self, request, arg, *args, **kwargs):
if kwargs['m0'] == 'death':
if kwargs['m1'] == 'year':
result = Artists.objects.filter(death_year=arg)
elif kwargs['m1'] == 'month':
result = Artists.objects.filter(death_month=arg)
elif kwargs['m1'] == 'day':
result = Artists.objects.filter(death_day=arg)
elif kwargs['m0'] == 'birth':
if kwargs['m1'] == 'year':
result = Artists.objects.filter(birth_year=arg)
elif kwargs['m1'] == 'month':
result = Artists.objects.filter(birth_month=arg)
elif kwargs['m1'] == 'day':
result = Artists.objects.filter(birthh_day=arg)
Run Code Online (Sandbox Code Playgroud)
death_year命名参数在哪里,该参数是我的模型中Artists表示数据库中的列的字段.变量'm0'和m1从urlconf我的get函数传递(它实际上是get我视图类中的一个方法).我可以控制变量的名称值death_year而不使用if else if链(即make it death_month或birth_year)吗?由于我有很多选择,我将不得不使用一个非常长的条件链,这条链导致同一行,但只有一个不同的命名参数.
我强烈怀疑你应该理解这整个问题来回答这个问题.最初的问题很简单:我可以在Python中使用命名参数及其对应的值作为变量吗?